Fix error when deleting members
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Rafael Epplée 2025-08-21 14:18:01 +02:00 committed by Moritz
parent 95d065345b
commit 7d2b719ca2
Signed by: moritz
GPG key ID: 1020A035E5DD0824
3 changed files with 32 additions and 3 deletions

View file

@ -35,8 +35,8 @@ audit:
mix deps.audit mix deps.audit
mix hex.audit mix hex.audit
test: install-dependencies start-database test *args: install-dependencies start-database
mix test mix test {{args}}
format: format:
mix format mix format

View file

@ -50,7 +50,8 @@ defmodule MvWeb.MemberLive.Index do
member = Ash.get!(Mv.Membership.Member, id) member = Ash.get!(Mv.Membership.Member, id)
Ash.destroy!(member) 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 end
# Selects one member in the list of members # Selects one member in the list of members

View file

@ -1,6 +1,7 @@
defmodule MvWeb.MemberLive.IndexTest do defmodule MvWeb.MemberLive.IndexTest do
use MvWeb.ConnCase, async: true use MvWeb.ConnCase, async: true
import Phoenix.LiveViewTest import Phoenix.LiveViewTest
require Ash.Query
test "shows translated title in German", %{conn: conn} do test "shows translated title in German", %{conn: conn} do
conn = conn_with_oidc_user(conn) conn = conn_with_oidc_user(conn)
@ -85,4 +86,31 @@ defmodule MvWeb.MemberLive.IndexTest do
assert state.socket.assigns.query == "Friedrich" assert state.socket.assigns.query == "Friedrich"
assert is_list(state.socket.assigns.members) assert is_list(state.socket.assigns.members)
end 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 end