diff --git a/test/mv_web/live/membership_fee_type_live/form_test.exs b/test/mv_web/live/membership_fee_type_live/form_test.exs index 52f2b1b..8576f6f 100644 --- a/test/mv_web/live/membership_fee_type_live/form_test.exs +++ b/test/mv_web/live/membership_fee_type_live/form_test.exs @@ -117,13 +117,13 @@ defmodule MvWeb.MembershipFeeTypeLive.FormTest do {:ok, view, _html} = live(conn, "/membership_fee_types/#{fee_type.id}/edit") # Change amount - html = - view - |> form("#membership-fee-type-form", %{"membership_fee_type[amount]" => "75.00"}) - |> render_change() + view + |> form("#membership-fee-type-form", %{"membership_fee_type[amount]" => "75.00"}) + |> render_change() - # Should show warning - assert html =~ "Warning" || html =~ "Warnung" || html =~ "affected" + # Should show warning in rendered view + html = render(view) + assert html =~ "affect" || html =~ "Change Amount" end test "amount change warning shows correct affected member count", %{conn: conn} do diff --git a/test/mv_web/live/membership_fee_type_live/index_test.exs b/test/mv_web/live/membership_fee_type_live/index_test.exs index 49cd481..bb10a13 100644 --- a/test/mv_web/live/membership_fee_type_live/index_test.exs +++ b/test/mv_web/live/membership_fee_type_live/index_test.exs @@ -133,9 +133,8 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do |> render_click() # Type should be deleted - assert_raise Ash.Error.Query.NotFound, fn -> - Ash.read_one!(MembershipFeeType |> Ash.Query.filter(id == ^fee_type.id)) - end + assert {:error, %Ash.Error.Invalid{errors: [%Ash.Error.Query.NotFound{}]}} = + Ash.get(MembershipFeeType, fee_type.id, domain: Mv.MembershipFees) end end diff --git a/test/mv_web/member_live/form_membership_fee_type_test.exs b/test/mv_web/member_live/form_membership_fee_type_test.exs index 6e9d833..cc4388f 100644 --- a/test/mv_web/member_live/form_membership_fee_type_test.exs +++ b/test/mv_web/member_live/form_membership_fee_type_test.exs @@ -93,15 +93,13 @@ defmodule MvWeb.MemberLive.FormMembershipFeeTypeTest do member = create_member(%{membership_fee_type_id: yearly_type.id}) - {:ok, view, _html} = live(conn, "/members/#{member.id}/edit") + {:ok, _view, html} = live(conn, "/members/#{member.id}/edit") - # Try to select monthly type (should show warning) - html = - view - |> form("form", %{"member[membership_fee_type_id]" => monthly_type.id}) - |> render_change() + # Monthly type should not be in the dropdown (filtered by interval) + refute html =~ monthly_type.id - assert html =~ "Warning" || html =~ "Warnung" || html =~ "not allowed" + # Only yearly types should be available + assert html =~ yearly_type.id end test "warning cleared if same interval selected", %{conn: conn} do @@ -115,7 +113,7 @@ defmodule MvWeb.MemberLive.FormMembershipFeeTypeTest do # Select another yearly type (should not show warning) html = view - |> form("form", %{"member[membership_fee_type_id]" => yearly_type2.id}) + |> form("#member-form", %{"member[membership_fee_type_id]" => yearly_type2.id}) |> render_change() refute html =~ "Warning" || html =~ "Warnung" @@ -135,7 +133,7 @@ defmodule MvWeb.MemberLive.FormMembershipFeeTypeTest do {:error, {:live_redirect, %{to: _to}}} = view - |> form("form", form_data) + |> form("#member-form", form_data) |> render_submit() # Verify member was created with fee type @@ -151,7 +149,9 @@ defmodule MvWeb.MemberLive.FormMembershipFeeTypeTest do # Set default fee type in settings fee_type = create_fee_type(%{interval: :yearly}) - Mv.Membership.Setting + {:ok, settings} = Mv.Membership.get_settings() + + settings |> Ash.Changeset.for_update(:update_membership_fee_settings, %{ default_membership_fee_type_id: fee_type.id }) diff --git a/test/mv_web/member_live/index_membership_fee_status_test.exs b/test/mv_web/member_live/index_membership_fee_status_test.exs index d807b4f..a37f7e3 100644 --- a/test/mv_web/member_live/index_membership_fee_status_test.exs +++ b/test/mv_web/member_live/index_membership_fee_status_test.exs @@ -118,9 +118,9 @@ defmodule MvWeb.MemberLive.IndexMembershipFeeStatusTest do {:ok, view, _html} = live(conn, "/members") - # Toggle to current cycle + # Toggle to current cycle (use the button in the header, not the one in the column) view - |> element("button[phx-click='toggle_current_cycle']") + |> element("button[phx-click='toggle_cycle_view'].btn-sm") |> render_click() html = render(view) @@ -179,11 +179,11 @@ defmodule MvWeb.MemberLive.IndexMembershipFeeStatusTest do fee_type = create_fee_type(%{interval: :yearly}) # Member with unpaid last cycle - member1 = create_member(%{membership_fee_type_id: fee_type.id}) + member1 = create_member(%{first_name: "UnpaidMember", membership_fee_type_id: fee_type.id}) create_cycle(member1, fee_type, %{cycle_start: ~D[2023-01-01], status: :unpaid}) # Member with paid last cycle - member2 = create_member(%{membership_fee_type_id: fee_type.id}) + member2 = create_member(%{first_name: "PaidMember", membership_fee_type_id: fee_type.id}) create_cycle(member2, fee_type, %{cycle_start: ~D[2023-01-01], status: :paid}) # Verify cycles exist in database @@ -197,14 +197,13 @@ defmodule MvWeb.MemberLive.IndexMembershipFeeStatusTest do |> Ash.Query.filter(member_id == ^member2.id) |> Ash.read!() - assert length(cycles1) > 0 - assert length(cycles2) > 0 + refute Enum.empty?(cycles1) + refute Enum.empty?(cycles2) - {:ok, view, _html} = live(conn, "/members?membership_fee_filter=unpaid_last") + {:ok, _view, html} = live(conn, "/members?membership_fee_filter=unpaid_last") - html = render(view) - assert html =~ member1.first_name - refute html =~ member2.first_name + assert html =~ "UnpaidMember" + refute html =~ "PaidMember" end test "filter unpaid in current cycle works", %{conn: conn} do @@ -214,11 +213,11 @@ defmodule MvWeb.MemberLive.IndexMembershipFeeStatusTest do current_year_start = %{today | month: 1, day: 1} # Member with unpaid current cycle - member1 = create_member(%{membership_fee_type_id: fee_type.id}) + member1 = create_member(%{first_name: "UnpaidCurrent", membership_fee_type_id: fee_type.id}) create_cycle(member1, fee_type, %{cycle_start: current_year_start, status: :unpaid}) # Member with paid current cycle - member2 = create_member(%{membership_fee_type_id: fee_type.id}) + member2 = create_member(%{first_name: "PaidCurrent", membership_fee_type_id: fee_type.id}) create_cycle(member2, fee_type, %{cycle_start: current_year_start, status: :paid}) # Verify cycles exist in database @@ -232,14 +231,13 @@ defmodule MvWeb.MemberLive.IndexMembershipFeeStatusTest do |> Ash.Query.filter(member_id == ^member2.id) |> Ash.read!() - assert length(cycles1) > 0 - assert length(cycles2) > 0 + refute Enum.empty?(cycles1) + refute Enum.empty?(cycles2) - {:ok, view, _html} = live(conn, "/members?membership_fee_filter=unpaid_current") + {:ok, _view, html} = live(conn, "/members?membership_fee_filter=unpaid_current") - html = render(view) - assert html =~ member1.first_name - refute html =~ member2.first_name + assert html =~ "UnpaidCurrent" + refute html =~ "PaidCurrent" end end