defmodule GitGudWeb.ErrorMessageTest do
use ExUnit.Case, async: true
import ExUnit.CaptureLog
alias GitGudWeb.ErrorMessage
test "a changeset reads as its field errors" do
cs =
{%{}, %{name: :string, size: :integer}}
|> Ecto.Changeset.cast(%{size: 900}, [:name, :size])
|> Ecto.Changeset.validate_required([:name])
|> Ecto.Changeset.validate_number(:size, less_than: 10)
message = ErrorMessage.describe(cs)
assert message =~ "name can't be blank"
assert message =~ "size must be less than 10"
end
test "strings pass through and atoms read as words" do
assert ErrorMessage.describe("branch is protected") == "branch is protected"
assert ErrorMessage.describe(:not_found) == "not found"
end
test "anything else is a ref, with the term only in the log" do
reason = {:git, "fatal: /var/lib/gitgud/repos/secret.git: bad object"}
log =
capture_log(fn ->
message = ErrorMessage.describe(reason)
assert message =~ ~r/^something went wrong \(ref [0-9a-f]{8}\)$/
refute message =~ "/var/lib"
send(self(), {:ref, message})
end)
assert_received {:ref, message}
[_, ref] = Regex.run(~r/ref ([0-9a-f]{8})/, message)
assert log =~ "error ref #{ref}"
assert log =~ "/var/lib/gitgud/repos/secret.git"
end
end
neiam
/gitgud
Git Gud
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Badges · Packages
⭐
1
Log in to mark this repository.
1.3 KiB · text
History
b868907