Packages
espec
1.4.4
1.10.0
1.9.2
1.9.1
1.9.0
1.8.3
1.8.2
1.8.1
1.8.0
1.7.0
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.2
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
0.8.28
0.8.27
0.8.26
0.8.25
0.8.24
0.8.23
0.8.22
0.8.21
0.8.20
0.8.19
0.8.18
0.8.17
0.8.16
0.8.15
0.8.14
0.8.13
0.8.12
0.8.11
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.2
0.4.1
0.4.0
0.3.7
0.3.5
0.3.0
0.2.0
0.1.0
BDD testing framework for Elixir inspired by RSpec.
Current section
Files
Jump to
Current section
Files
lib/espec/assertions/change_by.ex
defmodule ESpec.Assertions.ChangeBy do
@moduledoc """
Defines 'change' assertion.
it do: expect(function1).to change(function2, [by: value])
"""
use ESpec.Assertions.Interface
defp match(subject, [func, value]) do
value = Keyword.get(value, :by)
initial = func.()
subject.()
then = func.()
result = (initial != value && then == value)
{result, {then, initial != value, then == initial, then == initial + value}}
end
defp success_message(subject, [func, value], _result, positive) do
to = if positive, do: "changes by", else: "doesn't change"
"`#{inspect subject}` #{to} the value of `#{inspect func}` by `#{inspect Keyword.get(value, :by)}`."
end
defp error_message(subject, [func, value], {_then, true, true, _}, positive) do
to = if positive, do: "to", else: "not to"
"Expected `#{inspect subject}` #{to} change the value of `#{inspect func}` by `#{inspect Keyword.get(value, :by)}`, but was not changed"
end
defp error_message(subject, [func, value], {then, true, false, false}, positive) do
to = if positive, do: "to", else: "not to"
"Expected `#{inspect subject}` #{to} change the value of `#{inspect func}` by `#{inspect Keyword.get(value, :by)}`, but was changed by `#{inspect then}`"
end
end