From 73763b1f584d976c8a42b13001d2d9e2b308b514 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 6 Jan 2026 18:44:04 +0100 Subject: [PATCH] refactor: improve error_message test helper robustness 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. --- test/mv/authorization/role_test.exs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/mv/authorization/role_test.exs b/test/mv/authorization/role_test.exs index effa000..be297f2 100644 --- a/test/mv/authorization/role_test.exs +++ b/test/mv/authorization/role_test.exs @@ -53,7 +53,7 @@ defmodule Mv.Authorization.RoleTest do assert {:error, %Ash.Error.Invalid{errors: errors}} = Authorization.destroy_role(system_role) - message = error_message(errors, nil) + message = error_message(errors, :is_system_role) assert message =~ "Cannot delete system role" end @@ -84,14 +84,15 @@ defmodule Mv.Authorization.RoleTest do end # Helper function for error evaluation - # When field is nil, returns first error message (for errors without specific field) - defp error_message(errors, field) when is_nil(field) do + # When field is nil, returns first error message for errors without specific field + defp error_message(errors, nil) do errors + |> Enum.reject(fn err -> Map.has_key?(err, :field) end) |> Enum.map(&Map.get(&1, :message, "")) |> List.first() || "" end - defp error_message(errors, field) do + defp error_message(errors, field) when is_atom(field) do errors |> Enum.filter(fn err -> Map.get(err, :field) == field end) |> Enum.map(&Map.get(&1, :message, ""))