Packages
espec
0.8.0
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/accepted.ex
defmodule ESpec.Assertions.Accepted do
@moduledoc """
Defines 'accepted' assertion.
it do: expect(SomeModule).to accepted(:func)
"""
use ESpec.Assertions.Interface
defp match(subject, [func, args, opts]) do
pid = Keyword.get(opts, :pid) || :any
opts_count = Keyword.get(opts, :count) || :any
count = get_count(subject, func, args, pid)
if opts_count == :any do
if count >= 1 do
{true, true}
else
{false, count}
end
else
if count == opts_count do
{true, true}
else
{false, count}
end
end
end
defp get_count(subject, func, args, pid) do
Enum.count(:meck.history(subject), fn(el) ->
cond do
pid == :any && args == :any ->
case el do
{_, {^subject, ^func, _}, _return} -> true
_ -> false
end
pid == :any ->
case el do
{_, {^subject, ^func, ^args}, _return} -> true
_ -> false
end
args == :any ->
case el do
{^pid, {^subject, ^func, _}, _return} -> true
_ -> false
end
true ->
case el do
{^pid, {^subject, ^func, ^args}, _return} -> true
_ -> false
end
end
end)
end
defp success_message(subject, [func, args, opts], _result, positive) do
pid = Keyword.get(opts, :pid) || :any
opts_count = Keyword.get(opts, :count) || :any
count = if opts_count == :any, do: "at least once", else: "`#{opts_count}` times"
to = if positive, do: "accepted", else: "didn't accept"
"`#{inspect subject}` #{to} `#{inspect func}` with `#{inspect args}` in process `#{inspect pid}` #{count}."
end
defp error_message(subject, [func, args, opts], result, positive) do
to = if positive, do: "to", else: "to not"
but = "it accepted the function `#{result}` times"
pid = Keyword.get(opts, :pid) || :any
opts_count = Keyword.get(opts, :count) || :any
count = if opts_count == :any, do: "at least once", else: "`#{opts_count}` times"
"Expected `#{subject}` #{to} accept `#{inspect func}` with `#{inspect args}` in process `#{inspect pid}` #{count}, but #{but}."
end
end