From f2d7684b47ee0eeebdc48a4a0c2072d61bbb4701 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 12 Feb 2026 17:41:57 +0100 Subject: [PATCH] Fix create_fee_type default arg warning in StatisticsTest --- test/mv/statistics_test.exs | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/test/mv/statistics_test.exs b/test/mv/statistics_test.exs index 167b608..463dcb3 100644 --- a/test/mv/statistics_test.exs +++ b/test/mv/statistics_test.exs @@ -17,7 +17,7 @@ defmodule Mv.StatisticsTest do %{actor: actor} end - defp create_fee_type(actor, attrs \\ %{}) do + defp create_fee_type(actor, attrs) do MembershipFeeType |> Ash.Changeset.for_create( :create, @@ -162,6 +162,38 @@ defmodule Mv.StatisticsTest do assert Decimal.equal?(result.unpaid, Decimal.new(0)) assert Decimal.equal?(result.suspended, Decimal.new("50.00")) end + + 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")}) + + _m1 = + Mv.Fixtures.member_fixture(%{ + join_date: ~D[2020-01-01], + membership_fee_type_id: fee_type_a.id + }) + + _m2 = + Mv.Fixtures.member_fixture(%{ + join_date: ~D[2020-01-01], + membership_fee_type_id: fee_type_b.id + }) + + # Without filter: both fee types' cycles (2024) + all_result = Statistics.cycle_totals_by_year(2024, actor: actor) + assert Decimal.equal?(all_result.total, Decimal.new("100.00")) + + # With fee_type_id as string (as from form/URL): only that type's cycles + opts_a = [actor: actor, fee_type_id: to_string(fee_type_a.id)] + result_a = Statistics.cycle_totals_by_year(2024, opts_a) + assert Decimal.equal?(result_a.total, Decimal.new("30.00")) + + opts_b = [actor: actor, fee_type_id: to_string(fee_type_b.id)] + result_b = Statistics.cycle_totals_by_year(2024, opts_b) + assert Decimal.equal?(result_b.total, Decimal.new("70.00")) + end end describe "open_amount_total/1" do