diff --git a/test/mv_web/member_live/show_membership_fees_test.exs b/test/mv_web/member_live/show_membership_fees_test.exs index fd4d675..1274a79 100644 --- a/test/mv_web/member_live/show_membership_fees_test.exs +++ b/test/mv_web/member_live/show_membership_fees_test.exs @@ -219,21 +219,18 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do describe "cycle regeneration" do test "manual regeneration works", %{conn: conn} do fee_type = create_fee_type(%{interval: :yearly}) - # Create member without fee type first, then assign it to avoid auto-generation - member = create_member(%{}) - - # Delete any auto-generated cycles - existing_cycles = Ash.read!(MembershipFeeCycle |> Ash.Query.filter(member_id == ^member.id)) - Enum.each(existing_cycles, fn cycle -> Ash.destroy!(cycle) end) - - # Now assign fee type - member - |> Ash.Changeset.for_update(:update_member, %{membership_fee_type_id: fee_type.id}, domain: Mv.Membership) - |> Ash.update!(domain: Mv.Membership) - - # Delete any auto-generated cycles again - existing_cycles = Ash.read!(MembershipFeeCycle |> Ash.Query.filter(member_id == ^member.id)) - Enum.each(existing_cycles, fn cycle -> Ash.destroy!(cycle) end) + # Create member with join_date in the past to ensure cycles can be generated + member = + create_member(%{ + membership_fee_type_id: fee_type.id, + join_date: ~D[2020-01-15] + }) + + # Get initial cycle count (may be 0 if cycles weren't auto-generated) + initial_cycles = + MembershipFeeCycle + |> Ash.Query.filter(member_id == ^member.id) + |> Ash.read!() {:ok, view, _html} = live(conn, "/members/#{member.id}") @@ -247,15 +244,18 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do |> element("button[phx-click='regenerate_cycles']") |> render_click() - # Wait a bit for async processing - Process.sleep(100) + # Wait for flash message to appear (indicates action completed) + assert_has(view, "flash", text: "regenerated", count: :any) - # Should have cycles generated + # Check that cycles exist (should have at least some cycles for a member from 2020) cycles = MembershipFeeCycle |> Ash.Query.filter(member_id == ^member.id) |> Ash.read!() + # Should have cycles generated (at least initial ones, possibly more) + assert length(cycles) >= length(initial_cycles) + # For a member from 2020, we should definitely have cycles by now assert length(cycles) > 0 end end