Files
elixir-koans/test/display/failure_test.exs
2018-05-22 21:46:54 +01:00

57 lines
1.5 KiB
Elixir

defmodule FailureTests do
use ExUnit.Case
alias Display.Failure
test "assertion failure with proper expression" do
error = error(%ExUnit.AssertionError{expr: "hi"})
assert Failure.format_failure(error) == "Assertion failed in some_file.ex:42\n\"hi\"\n"
end
test "assertion failure with message" do
error = error(%ExUnit.AssertionError{expr: :ex_unit_no_meaningful_value, message: "hola"})
assert Failure.format_failure(error) == "Assertion failed in some_file.ex:42\nhola\n"
end
test "equality failure" do
error = error(%ExUnit.AssertionError{expr: quote(do: :lol == :wat), left: :lol, right: :wat})
assert Failure.format_failure(error) == """
Assertion failed in some_file.ex:42
:lol == :wat
left: :lol
right: :wat
"""
end
test "match failure" do
error = error(%ExUnit.AssertionError{expr: quote(do: match?(:lol, :wat)), right: :wat})
assert Failure.format_failure(error) == """
Assertion failed in some_file.ex:42
match?(:lol, :wat)
value does not match: :wat
"""
end
test "only offending lines are displayed for errors" do
[koan] = SingleArity.all_koans()
error = apply(SingleArity, koan, []) |> error()
assert Failure.format_failure(error) == """
Assertion failed in some_file.ex:42\nmatch?(:foo, ___)
"""
end
defp error(error) do
%{
error: error,
file: "some_file.ex",
line: 42
}
end
end