Update seeds: member without fee type, cycles with various statuses
Add member without membership fee type. Generate cycles for members with fee types and set different statuses: all paid, all unpaid, and mixed (paid/unpaid/suspended). Update tests accordingly.
This commit is contained in:
parent
f25e198b0e
commit
239d784f3c
2 changed files with 171 additions and 35 deletions
|
|
@ -43,18 +43,19 @@ defmodule Mv.SeedsTest do
|
|||
"CustomFields count should remain same after re-running seeds"
|
||||
end
|
||||
|
||||
test "all members have membership fee type assigned" do
|
||||
test "at least one member has no membership fee type assigned" do
|
||||
# Run the seeds script
|
||||
assert Code.eval_file("priv/repo/seeds.exs")
|
||||
|
||||
# Get all members
|
||||
{:ok, members} = Ash.read(Mv.Membership.Member)
|
||||
|
||||
# All members should have a membership_fee_type_id
|
||||
Enum.each(members, fn member ->
|
||||
assert member.membership_fee_type_id != nil,
|
||||
"Member #{member.first_name} #{member.last_name} should have a membership fee type assigned"
|
||||
end)
|
||||
# At least one member should have no membership_fee_type_id
|
||||
members_without_fee_type =
|
||||
Enum.filter(members, fn member -> member.membership_fee_type_id == nil end)
|
||||
|
||||
assert length(members_without_fee_type) > 0,
|
||||
"At least one member should have no membership fee type assigned"
|
||||
end
|
||||
|
||||
test "each membership fee type has at least one member" do
|
||||
|
|
@ -65,9 +66,10 @@ defmodule Mv.SeedsTest do
|
|||
{:ok, fee_types} = Ash.read(Mv.MembershipFees.MembershipFeeType)
|
||||
{:ok, members} = Ash.read(Mv.Membership.Member)
|
||||
|
||||
# Group members by fee type
|
||||
# Group members by fee type (excluding nil)
|
||||
members_by_fee_type =
|
||||
members
|
||||
|> Enum.filter(&(&1.membership_fee_type_id != nil))
|
||||
|> Enum.group_by(& &1.membership_fee_type_id)
|
||||
|
||||
# Each fee type should have at least one member
|
||||
|
|
@ -78,5 +80,38 @@ defmodule Mv.SeedsTest do
|
|||
"Membership fee type #{fee_type.name} should have at least one member assigned"
|
||||
end)
|
||||
end
|
||||
|
||||
test "members with fee types have cycles with various statuses" do
|
||||
# Run the seeds script
|
||||
assert Code.eval_file("priv/repo/seeds.exs")
|
||||
|
||||
# Get all members with fee types
|
||||
{:ok, members} = Ash.read(Mv.Membership.Member)
|
||||
|
||||
members_with_fee_types =
|
||||
members
|
||||
|> Enum.filter(&(&1.membership_fee_type_id != nil))
|
||||
|
||||
# At least one member should have cycles
|
||||
assert length(members_with_fee_types) > 0,
|
||||
"At least one member should have a membership fee type"
|
||||
|
||||
# Check that cycles exist and have various statuses
|
||||
all_cycle_statuses =
|
||||
members_with_fee_types
|
||||
|> Enum.flat_map(fn member ->
|
||||
Mv.MembershipFees.MembershipFeeCycle
|
||||
|> Ash.Query.filter(member_id == ^member.id)
|
||||
|> Ash.read!()
|
||||
end)
|
||||
|> Enum.map(& &1.status)
|
||||
|
||||
# At least one cycle should be paid
|
||||
assert :paid in all_cycle_statuses, "At least one cycle should be paid"
|
||||
# At least one cycle should be unpaid
|
||||
assert :unpaid in all_cycle_statuses, "At least one cycle should be unpaid"
|
||||
# At least one cycle should be suspended
|
||||
assert :suspended in all_cycle_statuses, "At least one cycle should be suspended"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue