feat: add ui to add members to groups
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing

This commit is contained in:
Simon 2026-02-03 11:44:08 +01:00
parent a536485b30
commit 7f001c55c5
Signed by: simon
GPG key ID: 40E7A58C4AA1EDB2
19 changed files with 881 additions and 243 deletions

View file

@ -37,8 +37,9 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
|> element("#member-search-input")
|> render_focus()
# phx-change is on the form, so we need to trigger it via the form
view
|> element("#member-search-input")
|> element("form[phx-change='search_members']")
|> render_change(%{"member_search" => "Alice"})
view
@ -46,7 +47,7 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
|> render_click()
view
|> element("button", "Add")
|> element("button[phx-click='add_selected_members']")
|> render_click()
# Verify in database
@ -86,7 +87,7 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
# Remove member via UI
view
|> element("button[phx-click='remove_member']", "")
|> element("button[phx-click='remove_member'][phx-value-member_id='#{member.id}']")
|> render_click()
# Verify in database
@ -128,8 +129,9 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
|> element("#member-search-input")
|> render_focus()
# phx-change is on the form, so we need to trigger it via the form
view
|> element("#member-search-input")
|> element("form[phx-change='search_members']")
|> render_change(%{"member_search" => "Charlie"})
view
@ -137,7 +139,7 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
|> render_click()
view
|> element("button", "Add")
|> element("button[phx-click='add_selected_members']")
|> render_click()
# Verify MemberGroup association exists
@ -179,7 +181,7 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
# Remove member
view
|> element("button[phx-click='remove_member']", "")
|> element("button[phx-click='remove_member'][phx-value-member_id='#{member.id}']")
|> render_click()
# Verify MemberGroup association is deleted
@ -267,8 +269,9 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
|> element("#member-search-input")
|> render_focus()
# phx-change is on the form, so we need to trigger it via the form
view
|> element("#member-search-input")
|> element("form[phx-change='search_members']")
|> render_change(%{"member_search" => "Frank"})
view
@ -276,7 +279,7 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
|> render_click()
view
|> element("button", "Add")
|> element("button[phx-click='add_selected_members']")
|> render_click()
# Add second member
@ -288,8 +291,9 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
|> element("#member-search-input")
|> render_focus()
# phx-change is on the form, so we need to trigger it via the form
view
|> element("#member-search-input")
|> element("form[phx-change='search_members']")
|> render_change(%{"member_search" => "Grace"})
view
@ -297,7 +301,7 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
|> render_click()
view
|> element("button", "Add")
|> element("button[phx-click='add_selected_members']")
|> render_click()
# Both members should be in list
@ -347,12 +351,12 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
# Remove first member
view
|> element("button[phx-click='remove_member']", "")
|> element("button[phx-click='remove_member'][phx-value-member_id='#{member1.id}']")
|> render_click()
# Remove second member
view
|> element("button[phx-click='remove_member']", "")
|> element("button[phx-click='remove_member'][phx-value-member_id='#{member2.id}']")
|> render_click()
# Both should be removed
@ -401,8 +405,9 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
|> element("#member-search-input")
|> render_focus()
# phx-change is on the form, so we need to trigger it via the form
view
|> element("#member-search-input")
|> element("form[phx-change='search_members']")
|> render_change(%{"member_search" => "Kate"})
view
@ -410,12 +415,12 @@ defmodule MvWeb.GroupLive.ShowIntegrationTest do
|> render_click()
view
|> element("button", "Add")
|> element("button[phx-click='add_selected_members']")
|> render_click()
# Remove member1
view
|> element("button[phx-click='remove_member']", "")
|> element("button[phx-click='remove_member'][phx-value-member_id='#{member1.id}']")
|> render_click()
# Only member2 should remain