diff --git a/Justfile b/Justfile index 1874b67..b28dbdc 100644 --- a/Justfile +++ b/Justfile @@ -35,8 +35,8 @@ audit: mix deps.audit mix hex.audit -test: install-dependencies start-database - mix test +test *args: install-dependencies start-database + mix test {{args}} format: mix format diff --git a/lib/mv_web/live/member_live/index.ex b/lib/mv_web/live/member_live/index.ex index 0a9d129..47a36ef 100644 --- a/lib/mv_web/live/member_live/index.ex +++ b/lib/mv_web/live/member_live/index.ex @@ -50,7 +50,8 @@ defmodule MvWeb.MemberLive.Index do member = Ash.get!(Mv.Membership.Member, id) Ash.destroy!(member) - {:noreply, stream_delete(socket, :members, member)} + updated_members = Enum.reject(socket.assigns.members, &(&1.id == id)) + {:noreply, assign(socket, :members, updated_members)} end # Selects one member in the list of members diff --git a/test/mv_web/member_live/index_test.exs b/test/mv_web/member_live/index_test.exs index b8b573c..240e15e 100644 --- a/test/mv_web/member_live/index_test.exs +++ b/test/mv_web/member_live/index_test.exs @@ -1,6 +1,7 @@ defmodule MvWeb.MemberLive.IndexTest do use MvWeb.ConnCase, async: true import Phoenix.LiveViewTest + require Ash.Query test "shows translated title in German", %{conn: conn} do conn = conn_with_oidc_user(conn) @@ -85,4 +86,31 @@ defmodule MvWeb.MemberLive.IndexTest do assert state.socket.assigns.query == "Friedrich" assert is_list(state.socket.assigns.members) end + + test "can delete a member without error", %{conn: conn} do + # Create a test member first + {:ok, member} = + Mv.Membership.create_member(%{ + first_name: "Test", + last_name: "User", + email: "test@example.com" + }) + + conn = conn_with_oidc_user(conn) + {:ok, index_view, _html} = live(conn, "/members") + + # Verify the member is displayed + assert has_element?(index_view, "#members", "Test User") + + # Click the delete link for this member + index_view + |> element("a", "Delete") + |> render_click() + + # Verify the member is no longer displayed + refute has_element?(index_view, "#members", "Test User") + + # Verify the member was actually deleted from the database + assert not (Mv.Membership.Member |> Ash.Query.filter(id == ^member.id) |> Ash.exists?()) + end end