refactor: improve error_message test helper robustness
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Use Enum.reject for nil field case to explicitly filter errors without field. Update test to use :is_system_role field since validation error includes field.
This commit is contained in:
parent
ce1d5790a3
commit
73763b1f58
1 changed files with 5 additions and 4 deletions
|
|
@ -53,7 +53,7 @@ defmodule Mv.Authorization.RoleTest do
|
||||||
assert {:error, %Ash.Error.Invalid{errors: errors}} =
|
assert {:error, %Ash.Error.Invalid{errors: errors}} =
|
||||||
Authorization.destroy_role(system_role)
|
Authorization.destroy_role(system_role)
|
||||||
|
|
||||||
message = error_message(errors, nil)
|
message = error_message(errors, :is_system_role)
|
||||||
assert message =~ "Cannot delete system role"
|
assert message =~ "Cannot delete system role"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -84,14 +84,15 @@ defmodule Mv.Authorization.RoleTest do
|
||||||
end
|
end
|
||||||
|
|
||||||
# Helper function for error evaluation
|
# Helper function for error evaluation
|
||||||
# When field is nil, returns first error message (for errors without specific field)
|
# When field is nil, returns first error message for errors without specific field
|
||||||
defp error_message(errors, field) when is_nil(field) do
|
defp error_message(errors, nil) do
|
||||||
errors
|
errors
|
||||||
|
|> Enum.reject(fn err -> Map.has_key?(err, :field) end)
|
||||||
|> Enum.map(&Map.get(&1, :message, ""))
|
|> Enum.map(&Map.get(&1, :message, ""))
|
||||||
|> List.first() || ""
|
|> List.first() || ""
|
||||||
end
|
end
|
||||||
|
|
||||||
defp error_message(errors, field) do
|
defp error_message(errors, field) when is_atom(field) do
|
||||||
errors
|
errors
|
||||||
|> Enum.filter(fn err -> Map.get(err, :field) == field end)
|
|> Enum.filter(fn err -> Map.get(err, :field) == field end)
|
||||||
|> Enum.map(&Map.get(&1, :message, ""))
|
|> Enum.map(&Map.get(&1, :message, ""))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue