test(membership-fees): share create_fee_type and create_cycle fixtures

Replace the create_fee_type/create_cycle helpers duplicated across 18/8
membership-fee test files with a single shared definition in Mv.Fixtures,
reconciling the divergent local signatures (including the reversed
argument order) into one superset so behavior is unchanged.
This commit is contained in:
Moritz 2026-06-16 17:49:50 +02:00
parent 9aa5bdb6a7
commit 18fb954f73
19 changed files with 279 additions and 513 deletions

View file

@ -6,11 +6,11 @@ defmodule Mv.StatisticsTest do
require Ash.Query
import Ash.Expr
import Mv.Fixtures, only: [create_fee_type: 2]
alias Mv.Membership.Member
alias Mv.MembershipFees
alias Mv.MembershipFees.MembershipFeeCycle
alias Mv.MembershipFees.MembershipFeeType
alias Mv.Statistics
setup do
@ -18,22 +18,6 @@ defmodule Mv.StatisticsTest do
%{actor: actor}
end
defp create_fee_type(actor, attrs) do
MembershipFeeType
|> Ash.Changeset.for_create(
:create,
Map.merge(
%{
name: "Test Fee #{System.unique_integer([:positive])}",
amount: Decimal.new("50.00"),
interval: :yearly
},
attrs
)
)
|> Ash.create!(actor: actor)
end
describe "first_join_year/1" do
test "returns the year of the earliest join_date", %{actor: actor} do
Mv.Fixtures.member_fixture(%{join_date: ~D[2019-03-15]})
@ -131,7 +115,7 @@ defmodule Mv.StatisticsTest do
end
test "returns totals by status for cycles in that year", %{actor: actor} do
fee_type = create_fee_type(actor, %{amount: Decimal.new("50.00")})
fee_type = create_fee_type(%{amount: Decimal.new("50.00")}, actor)
# Creating members with fee type triggers cycle generation (2020..today). We use 2024 cycles.
_member1 =
@ -171,8 +155,8 @@ defmodule Mv.StatisticsTest do
test "when fee_type_id is passed in opts, returns only cycles of that fee type", %{
actor: actor
} do
fee_type_a = create_fee_type(actor, %{amount: Decimal.new("30.00")})
fee_type_b = create_fee_type(actor, %{amount: Decimal.new("70.00")})
fee_type_a = create_fee_type(%{amount: Decimal.new("30.00")}, actor)
fee_type_b = create_fee_type(%{amount: Decimal.new("70.00")}, actor)
_m1 =
Mv.Fixtures.member_fixture(%{
@ -207,7 +191,7 @@ defmodule Mv.StatisticsTest do
end
test "returns sum of amount for all unpaid cycles", %{actor: actor} do
fee_type = create_fee_type(actor, %{amount: Decimal.new("50.00")})
fee_type = create_fee_type(%{amount: Decimal.new("50.00")}, actor)
_member =
Mv.Fixtures.member_fixture(%{