fix: normalize checkbox value and improve UI layout
- Normalize checkbox 'on' value to boolean true in settings - Change Payment Data layout to flex-nowrap for horizontal display - Replace membership fee type dropdown with display-only view - Fix tests to use correct button selectors and switch to membership fees tab
This commit is contained in:
parent
3f723a3c3a
commit
803d9a0a94
10 changed files with 262 additions and 91 deletions
|
|
@ -12,7 +12,7 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do
|
|||
|
||||
require Ash.Query
|
||||
|
||||
setup do
|
||||
setup %{conn: conn} do
|
||||
# Create admin user
|
||||
{:ok, user} =
|
||||
Mv.Accounts.User
|
||||
|
|
@ -22,7 +22,7 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do
|
|||
})
|
||||
|> Ash.create()
|
||||
|
||||
conn = log_in_user(build_conn(), user)
|
||||
conn = conn_with_password_user(conn, user)
|
||||
%{conn: conn, user: user}
|
||||
end
|
||||
|
||||
|
|
@ -98,7 +98,14 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do
|
|||
status: :paid
|
||||
})
|
||||
|
||||
{:ok, _view, html} = live(conn, "/members/#{member.id}")
|
||||
{:ok, view, _html} = live(conn, "/members/#{member.id}")
|
||||
|
||||
# Switch to membership fees tab
|
||||
view
|
||||
|> element("button[phx-click='switch_tab'][phx-value-tab='membership_fees']")
|
||||
|> render_click()
|
||||
|
||||
html = render(view)
|
||||
|
||||
# Should show interval, amount, status
|
||||
assert html =~ "Yearly" || html =~ "Jährlich"
|
||||
|
|
@ -107,8 +114,8 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do
|
|||
end
|
||||
end
|
||||
|
||||
describe "membership fee type dropdown" do
|
||||
test "shows only same-interval types", %{conn: conn} do
|
||||
describe "membership fee type display" do
|
||||
test "shows assigned membership fee type", %{conn: conn} do
|
||||
yearly_type = create_fee_type(%{interval: :yearly, name: "Yearly Type"})
|
||||
_monthly_type = create_fee_type(%{interval: :monthly, name: "Monthly Type"})
|
||||
|
||||
|
|
@ -116,27 +123,17 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do
|
|||
|
||||
{:ok, _view, html} = live(conn, "/members/#{member.id}")
|
||||
|
||||
# Should show yearly type but not monthly
|
||||
# Should show yearly type name
|
||||
assert html =~ "Yearly Type"
|
||||
refute html =~ "Monthly Type"
|
||||
end
|
||||
|
||||
test "shows warning if different interval selected", %{conn: conn} do
|
||||
yearly_type = create_fee_type(%{interval: :yearly, name: "Yearly Type"})
|
||||
monthly_type = create_fee_type(%{interval: :monthly, name: "Monthly Type"})
|
||||
test "shows no type message when no type assigned", %{conn: conn} do
|
||||
member = create_member(%{})
|
||||
|
||||
member = create_member(%{membership_fee_type_id: yearly_type.id})
|
||||
{:ok, _view, html} = live(conn, "/members/#{member.id}")
|
||||
|
||||
{:ok, view, _html} = live(conn, "/members/#{member.id}")
|
||||
|
||||
# Try to select monthly type (should show warning)
|
||||
# Note: This test may need adjustment based on actual implementation
|
||||
html =
|
||||
view
|
||||
|> form("form", %{"membership_fee_type_id" => monthly_type.id})
|
||||
|> render_change()
|
||||
|
||||
assert html =~ "Warning" || html =~ "Warnung" || html =~ "not allowed"
|
||||
# Should show message about no type assigned
|
||||
assert html =~ "No membership fee type assigned" || html =~ "No type"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -149,9 +146,14 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do
|
|||
|
||||
{:ok, view, _html} = live(conn, "/members/#{member.id}")
|
||||
|
||||
# Switch to membership fees tab
|
||||
view
|
||||
|> element("button[phx-click='switch_tab'][phx-value-tab='membership_fees']")
|
||||
|> render_click()
|
||||
|
||||
# Mark as paid
|
||||
view
|
||||
|> element("button[phx-click='mark_as_paid'][phx-value-cycle-id='#{cycle.id}']")
|
||||
|> element("button[phx-click='mark_cycle_status'][phx-value-cycle_id='#{cycle.id}'][phx-value-status='paid']")
|
||||
|> render_click()
|
||||
|
||||
# Verify cycle is now paid
|
||||
|
|
@ -167,9 +169,14 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do
|
|||
|
||||
{:ok, view, _html} = live(conn, "/members/#{member.id}")
|
||||
|
||||
# Switch to membership fees tab
|
||||
view
|
||||
|> element("button[phx-click='switch_tab'][phx-value-tab='membership_fees']")
|
||||
|> render_click()
|
||||
|
||||
# Mark as suspended
|
||||
view
|
||||
|> element("button[phx-click='mark_as_suspended'][phx-value-cycle-id='#{cycle.id}']")
|
||||
|> element("button[phx-click='mark_cycle_status'][phx-value-cycle_id='#{cycle.id}'][phx-value-status='suspended']")
|
||||
|> render_click()
|
||||
|
||||
# Verify cycle is now suspended
|
||||
|
|
@ -185,9 +192,14 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do
|
|||
|
||||
{:ok, view, _html} = live(conn, "/members/#{member.id}")
|
||||
|
||||
# Switch to membership fees tab
|
||||
view
|
||||
|> element("button[phx-click='switch_tab'][phx-value-tab='membership_fees']")
|
||||
|> render_click()
|
||||
|
||||
# Mark as unpaid
|
||||
view
|
||||
|> element("button[phx-click='mark_as_unpaid'][phx-value-cycle-id='#{cycle.id}']")
|
||||
|> element("button[phx-click='mark_cycle_status'][phx-value-cycle_id='#{cycle.id}'][phx-value-status='unpaid']")
|
||||
|> render_click()
|
||||
|
||||
# Verify cycle is now unpaid
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue