From f25e198b0efddb399278b09f0e3a2e6a8b9c2f85 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 18 Dec 2025 13:47:23 +0100 Subject: [PATCH] Update cycle button styling and text Make cycle button match PaymentFilterComponent and Columns button style. Show 'Current Cycle Payment Status' or 'Last Cycle Payment Status' based on active state. Button shows active state when current cycle is selected. --- lib/mv_web/live/member_live/index.html.heex | 45 +++++++++++++-------- priv/repo/seeds.exs | 9 ++++- test/seeds_test.exs | 36 +++++++++++++++++ 3 files changed, 71 insertions(+), 19 deletions(-) diff --git a/lib/mv_web/live/member_live/index.html.heex b/lib/mv_web/live/member_live/index.html.heex index 9a1e94f..480f2bd 100644 --- a/lib/mv_web/live/member_live/index.html.heex +++ b/lib/mv_web/live/member_live/index.html.heex @@ -42,23 +42,34 @@ cycle_status_filter={@cycle_status_filter} member_count={length(@members)} /> -
- -
+ <.live_component module={MvWeb.Components.FieldVisibilityDropdownComponent} id="field-visibility-dropdown" diff --git a/priv/repo/seeds.exs b/priv/repo/seeds.exs index bbb6bc3..97eb136 100644 --- a/priv/repo/seeds.exs +++ b/priv/repo/seeds.exs @@ -186,7 +186,10 @@ Enum.with_index(member_attrs_list) member_attrs_with_fee_type = Map.put(member_attrs, :membership_fee_type_id, fee_type.id) # Use upsert to prevent duplicates based on email - Membership.create_member!(member_attrs_with_fee_type, upsert?: true, upsert_identity: :unique_email) + Membership.create_member!(member_attrs_with_fee_type, + upsert?: true, + upsert_identity: :unique_email + ) end) # Create additional users for user-member linking examples @@ -249,7 +252,9 @@ Enum.with_index(linked_members) # Start from where previous members ended fee_type_index = rem(length(member_attrs_list) + index, length(all_fee_types)) fee_type = Enum.at(all_fee_types, fee_type_index) - member_attrs_with_fee_type = Map.put(member_attrs_without_user, :membership_fee_type_id, fee_type.id) + + member_attrs_with_fee_type = + Map.put(member_attrs_without_user, :membership_fee_type_id, fee_type.id) # Check if user already has a member if user.member_id == nil do diff --git a/test/seeds_test.exs b/test/seeds_test.exs index b4d887c..8075078 100644 --- a/test/seeds_test.exs +++ b/test/seeds_test.exs @@ -42,5 +42,41 @@ defmodule Mv.SeedsTest do assert length(custom_fields_count_1) == length(custom_fields_count_2), "CustomFields count should remain same after re-running seeds" end + + test "all members have 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) + end + + test "each membership fee type has at least one member" do + # Run the seeds script + assert Code.eval_file("priv/repo/seeds.exs") + + # Get all fee types and members + {:ok, fee_types} = Ash.read(Mv.MembershipFees.MembershipFeeType) + {:ok, members} = Ash.read(Mv.Membership.Member) + + # Group members by fee type + members_by_fee_type = + members + |> Enum.group_by(& &1.membership_fee_type_id) + + # Each fee type should have at least one member + Enum.each(fee_types, fn fee_type -> + members_for_type = Map.get(members_by_fee_type, fee_type.id, []) + + assert length(members_for_type) > 0, + "Membership fee type #{fee_type.name} should have at least one member assigned" + end) + end end end