fix: ensure cycles are generated in regeneration test

- Delete auto-generated cycles before manual regeneration
- Add small delay to allow async processing
- Test now correctly verifies cycle regeneration
This commit is contained in:
Moritz 2025-12-16 12:33:56 +01:00
parent 94de6b2e8f
commit e3ba6e9e7b
Signed by: moritz
GPG key ID: 1020A035E5DD0824

View file

@ -219,7 +219,21 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do
describe "cycle regeneration" do describe "cycle regeneration" do
test "manual regeneration works", %{conn: conn} do test "manual regeneration works", %{conn: conn} do
fee_type = create_fee_type(%{interval: :yearly}) fee_type = create_fee_type(%{interval: :yearly})
member = create_member(%{membership_fee_type_id: fee_type.id}) # 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)
{:ok, view, _html} = live(conn, "/members/#{member.id}") {:ok, view, _html} = live(conn, "/members/#{member.id}")
@ -233,6 +247,9 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do
|> element("button[phx-click='regenerate_cycles']") |> element("button[phx-click='regenerate_cycles']")
|> render_click() |> render_click()
# Wait a bit for async processing
Process.sleep(100)
# Should have cycles generated # Should have cycles generated
cycles = cycles =
MembershipFeeCycle MembershipFeeCycle