diff --git a/lib/mv_web/live/member_live/form.ex b/lib/mv_web/live/member_live/form.ex index d384a45..b319fa1 100644 --- a/lib/mv_web/live/member_live/form.ex +++ b/lib/mv_web/live/member_live/form.ex @@ -375,7 +375,9 @@ defmodule MvWeb.MemberLive.Form do [error | _] -> # Try to extract message from other error types case error do - %{message: message} when is_binary(message) -> message + %{message: message} when is_binary(message) -> + message + error when is_struct(error) -> # Try to use Ash.ErrorKind protocol if available try do @@ -383,7 +385,9 @@ defmodule MvWeb.MemberLive.Form do rescue Protocol.UndefinedError -> gettext("Failed to save member. Please try again.") end - _ -> gettext("Failed to save member. Please try again.") + + _ -> + gettext("Failed to save member. Please try again.") end _ -> diff --git a/priv/repo/seeds.exs b/priv/repo/seeds.exs index 6294353..2e7543a 100644 --- a/priv/repo/seeds.exs +++ b/priv/repo/seeds.exs @@ -166,7 +166,7 @@ case Accounts.User # User already exists (e.g., via OIDC) - assign admin role existing_admin_user |> Ash.Changeset.for_update(:update, %{}) - |> Ash.Changeset.manage_relationship(:role, admin_role, type: :replace) + |> Ash.Changeset.manage_relationship(:role, admin_role, type: :append_and_remove) |> Ash.update!() {:ok, nil} -> @@ -177,7 +177,7 @@ case Accounts.User |> then(fn user -> user |> Ash.Changeset.for_update(:update, %{}) - |> Ash.Changeset.manage_relationship(:role, admin_role, type: :replace) + |> Ash.Changeset.manage_relationship(:role, admin_role, type: :append_and_remove) |> Ash.update!() end) diff --git a/test/mv_web/member_live/form_error_handling_test.exs b/test/mv_web/member_live/form_error_handling_test.exs index 4f76fca..859402e 100644 --- a/test/mv_web/member_live/form_error_handling_test.exs +++ b/test/mv_web/member_live/form_error_handling_test.exs @@ -39,6 +39,7 @@ defmodule MvWeb.MemberLive.FormErrorHandlingTest do # Should show flash error message assert has_element?(view, "#flash-group") + assert html =~ "error" or html =~ "Error" or html =~ "Fehler" or html =~ "failed" or html =~ "fehlgeschlagen" or html =~ "Validation failed" or html =~ "Validierung fehlgeschlagen" @@ -64,6 +65,7 @@ defmodule MvWeb.MemberLive.FormErrorHandlingTest do # Should show flash error message assert has_element?(view, "#flash-group") + assert html =~ "error" or html =~ "Error" or html =~ "Fehler" or html =~ "failed" or html =~ "fehlgeschlagen" or html =~ "Validation failed" or html =~ "Validierung fehlgeschlagen" or @@ -108,6 +110,7 @@ defmodule MvWeb.MemberLive.FormErrorHandlingTest do # Should show flash error message assert has_element?(view, "#flash-group") + assert html =~ "error" or html =~ "Error" or html =~ "Fehler" or html =~ "failed" or html =~ "fehlgeschlagen" or html =~ "Validation failed" or html =~ "Validierung fehlgeschlagen"