Current section

Files

Jump to
espec lib espec assertions assert_receive.ex
Raw

lib/espec/assertions/assert_receive.ex

defmodule ESpec.Assertions.AssertReceive do
@moduledoc """
Defines 'assert_receive' and 'assert_received' assertions.
it do: assert_receive :hello
"""
use ESpec.Assertions.Interface
@join_sym "\n\t"
defp match(subject, [pattern, _pins, _mailbox_messages]) do
case subject do
{:error, :timeout} -> {false, pattern}
{pattern, _vars} -> {true, pattern}
end
end
defp success_message(_subject, _val, result, _positive) do
"Received `#{inspect(result)}`."
end
defp error_message(_subject, [_pattern, pins, mailbox_messages], result, _positive) do
[
"Expected to receive `#{inspect(result)}` but it doesn't.",
"Pinned variables: #{inspect(pins)}",
"Process mailbox:",
messages(mailbox_messages)
]
|> Enum.join(@join_sym)
end
defp messages(mailbox_messages), do: Enum.map_join(mailbox_messages, @join_sym, &inspect/1)
end