fix: normalize checkbox value and improve UI layout
- Normalize checkbox 'on' value to boolean true in settings - Change Payment Data layout to flex-nowrap for horizontal display - Replace membership fee type dropdown with display-only view - Fix tests to use correct button selectors and switch to membership fees tab
This commit is contained in:
parent
3f723a3c3a
commit
803d9a0a94
10 changed files with 262 additions and 91 deletions
|
|
@ -2,7 +2,9 @@ defmodule MvWeb.Helpers.MembershipFeeHelpersTest do
|
|||
@moduledoc """
|
||||
Tests for MembershipFeeHelpers module.
|
||||
"""
|
||||
use ExUnit.Case, async: true
|
||||
use Mv.DataCase, async: true
|
||||
|
||||
require Ash.Query
|
||||
|
||||
alias MvWeb.Helpers.MembershipFeeHelpers
|
||||
alias Mv.MembershipFees.CalendarCycles
|
||||
|
|
@ -72,19 +74,33 @@ defmodule MvWeb.Helpers.MembershipFeeHelpersTest do
|
|||
})
|
||||
|> Ash.create!()
|
||||
|
||||
# Create member without fee type first to avoid auto-generation
|
||||
member =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test#{System.unique_integer([:positive])}@example.com",
|
||||
membership_fee_type_id: fee_type.id,
|
||||
join_date: ~D[2022-01-01]
|
||||
})
|
||||
|> Ash.create!()
|
||||
|
||||
# Create cycles
|
||||
cycle_2022 =
|
||||
# Assign fee type after member creation (this may generate cycles, but we'll create our own)
|
||||
member =
|
||||
member
|
||||
|> Ash.Changeset.for_update(:update_member, %{membership_fee_type_id: fee_type.id})
|
||||
|> Ash.update!()
|
||||
|
||||
# Delete any auto-generated cycles first
|
||||
cycles =
|
||||
Mv.MembershipFees.MembershipFeeCycle
|
||||
|> Ash.Query.filter(member_id == ^member.id)
|
||||
|> Ash.read!()
|
||||
|
||||
Enum.each(cycles, fn cycle -> Ash.destroy!(cycle) end)
|
||||
|
||||
# Create cycles manually
|
||||
_cycle_2022 =
|
||||
Mv.MembershipFees.MembershipFeeCycle
|
||||
|> Ash.Changeset.for_create(:create, %{
|
||||
cycle_start: ~D[2022-01-01],
|
||||
|
|
@ -106,8 +122,15 @@ defmodule MvWeb.Helpers.MembershipFeeHelpersTest do
|
|||
})
|
||||
|> Ash.create!()
|
||||
|
||||
# Assuming we're in 2024, last completed should be 2023
|
||||
last_cycle = MembershipFeeHelpers.get_last_completed_cycle(member, Date.utc_today())
|
||||
# Load cycles with membership_fee_type relationship
|
||||
member =
|
||||
member
|
||||
|> Ash.load!(membership_fee_cycles: [:membership_fee_type])
|
||||
|> Ash.load!(:membership_fee_type)
|
||||
|
||||
# Use a fixed date in 2024 to ensure 2023 is last completed
|
||||
today = ~D[2024-06-15]
|
||||
last_cycle = MembershipFeeHelpers.get_last_completed_cycle(member, today)
|
||||
|
||||
assert last_cycle.id == cycle_2023.id
|
||||
end
|
||||
|
|
@ -122,16 +145,36 @@ defmodule MvWeb.Helpers.MembershipFeeHelpersTest do
|
|||
})
|
||||
|> Ash.create!()
|
||||
|
||||
# Create member without fee type first
|
||||
member =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test#{System.unique_integer([:positive])}@example.com",
|
||||
membership_fee_type_id: fee_type.id
|
||||
email: "test#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create!()
|
||||
|
||||
# Assign fee type
|
||||
member =
|
||||
member
|
||||
|> Ash.Changeset.for_update(:update_member, %{membership_fee_type_id: fee_type.id})
|
||||
|> Ash.update!()
|
||||
|
||||
# Delete any auto-generated cycles
|
||||
cycles =
|
||||
Mv.MembershipFees.MembershipFeeCycle
|
||||
|> Ash.Query.filter(member_id == ^member.id)
|
||||
|> Ash.read!()
|
||||
|
||||
Enum.each(cycles, fn cycle -> Ash.destroy!(cycle) end)
|
||||
|
||||
# Load cycles and fee type (will be empty)
|
||||
member =
|
||||
member
|
||||
|> Ash.load!(membership_fee_cycles: [:membership_fee_type])
|
||||
|> Ash.load!(:membership_fee_type)
|
||||
|
||||
last_cycle = MembershipFeeHelpers.get_last_completed_cycle(member, Date.utc_today())
|
||||
assert last_cycle == nil
|
||||
end
|
||||
|
|
@ -148,17 +191,31 @@ defmodule MvWeb.Helpers.MembershipFeeHelpersTest do
|
|||
})
|
||||
|> Ash.create!()
|
||||
|
||||
# Create member without fee type first
|
||||
member =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test#{System.unique_integer([:positive])}@example.com",
|
||||
membership_fee_type_id: fee_type.id,
|
||||
join_date: ~D[2023-01-01]
|
||||
})
|
||||
|> Ash.create!()
|
||||
|
||||
# Assign fee type
|
||||
member =
|
||||
member
|
||||
|> Ash.Changeset.for_update(:update_member, %{membership_fee_type_id: fee_type.id})
|
||||
|> Ash.update!()
|
||||
|
||||
# Delete any auto-generated cycles
|
||||
cycles =
|
||||
Mv.MembershipFees.MembershipFeeCycle
|
||||
|> Ash.Query.filter(member_id == ^member.id)
|
||||
|> Ash.read!()
|
||||
|
||||
Enum.each(cycles, fn cycle -> Ash.destroy!(cycle) end)
|
||||
|
||||
today = Date.utc_today()
|
||||
current_year_start = %{today | month: 1, day: 1}
|
||||
|
||||
|
|
@ -173,6 +230,12 @@ defmodule MvWeb.Helpers.MembershipFeeHelpersTest do
|
|||
})
|
||||
|> Ash.create!()
|
||||
|
||||
# Load cycles with membership_fee_type relationship
|
||||
member =
|
||||
member
|
||||
|> Ash.load!(membership_fee_cycles: [:membership_fee_type])
|
||||
|> Ash.load!(:membership_fee_type)
|
||||
|
||||
result = MembershipFeeHelpers.get_current_cycle(member, today)
|
||||
|
||||
assert result.id == current_cycle.id
|
||||
|
|
@ -181,9 +244,9 @@ defmodule MvWeb.Helpers.MembershipFeeHelpersTest do
|
|||
|
||||
describe "status_color/1" do
|
||||
test "returns correct color classes for statuses" do
|
||||
assert MembershipFeeHelpers.status_color(:paid) == "text-success"
|
||||
assert MembershipFeeHelpers.status_color(:unpaid) == "text-error"
|
||||
assert MembershipFeeHelpers.status_color(:suspended) == "text-base-content/60"
|
||||
assert MembershipFeeHelpers.status_color(:paid) == "badge-success"
|
||||
assert MembershipFeeHelpers.status_color(:unpaid) == "badge-error"
|
||||
assert MembershipFeeHelpers.status_color(:suspended) == "badge-ghost"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue