refactor: implement proper notification handling via after_action hooks
Refactor notification handling according to Ash best practices
This commit is contained in:
parent
f7c33bfc7d
commit
4997493139
5 changed files with 106 additions and 164 deletions
|
|
@ -84,7 +84,7 @@ defmodule Mv.MembershipFees.CycleGeneratorEdgeCasesTest do
|
|||
Enum.each(existing_cycles, &Ash.destroy!(&1))
|
||||
|
||||
# Generate cycles with fixed "today" date
|
||||
{:ok, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
{:ok, _, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
end
|
||||
|
||||
member
|
||||
|
|
@ -128,7 +128,7 @@ defmodule Mv.MembershipFees.CycleGeneratorEdgeCasesTest do
|
|||
|> Ash.update!()
|
||||
|
||||
# Explicitly generate cycles with fixed "today" date
|
||||
{:ok, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
{:ok, _, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
|
||||
# Check all cycles
|
||||
cycles = get_member_cycles(member.id)
|
||||
|
|
@ -158,7 +158,7 @@ defmodule Mv.MembershipFees.CycleGeneratorEdgeCasesTest do
|
|||
|> Ash.update!()
|
||||
|
||||
# Explicitly generate cycles with fixed "today" date
|
||||
{:ok, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
{:ok, _, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
|
||||
# Check all cycles
|
||||
cycles = get_member_cycles(member.id)
|
||||
|
|
@ -333,7 +333,7 @@ defmodule Mv.MembershipFees.CycleGeneratorEdgeCasesTest do
|
|||
|
||||
# Explicitly generate cycles with fixed "today" date
|
||||
today = ~D[2024-06-15]
|
||||
{:ok, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
{:ok, _, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
|
||||
# Check all cycles
|
||||
all_cycles = get_member_cycles(member.id)
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ defmodule Mv.MembershipFees.CycleGeneratorTest do
|
|||
|
||||
# Explicitly generate cycles with fixed "today" date to avoid date dependency
|
||||
today = ~D[2024-06-15]
|
||||
{:ok, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
{:ok, _, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
|
||||
# Verify cycles were generated
|
||||
all_cycles = get_member_cycles(member.id)
|
||||
|
|
@ -122,7 +122,7 @@ defmodule Mv.MembershipFees.CycleGeneratorTest do
|
|||
|
||||
# Generate cycles with specific "today" date
|
||||
today = ~D[2024-06-15]
|
||||
{:ok, new_cycles} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
{:ok, new_cycles, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
|
||||
# Should generate only 2023 and 2024 (2022 already exists)
|
||||
new_cycle_years = Enum.map(new_cycles, & &1.cycle_start.year) |> Enum.sort()
|
||||
|
|
@ -144,7 +144,7 @@ defmodule Mv.MembershipFees.CycleGeneratorTest do
|
|||
|
||||
# Generate cycles with specific "today" date far in the future
|
||||
today = ~D[2025-06-15]
|
||||
{:ok, cycles} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
{:ok, cycles, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
|
||||
# With exit_date in 2023, should only generate 2022 and 2023 cycles
|
||||
cycle_years = Enum.map(cycles, & &1.cycle_start.year) |> Enum.sort()
|
||||
|
|
@ -168,10 +168,10 @@ defmodule Mv.MembershipFees.CycleGeneratorTest do
|
|||
today = ~D[2024-06-15]
|
||||
|
||||
# First generation
|
||||
{:ok, _first_cycles} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
{:ok, _first_cycles, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
|
||||
# Second generation (should be idempotent)
|
||||
{:ok, second_cycles} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
{:ok, second_cycles, _} = CycleGenerator.generate_cycles_for_member(member.id, today: today)
|
||||
|
||||
# Second call should return empty list (no new cycles)
|
||||
assert second_cycles == []
|
||||
|
|
@ -411,12 +411,12 @@ defmodule Mv.MembershipFees.CycleGeneratorTest do
|
|||
result2 = Task.await(task2)
|
||||
|
||||
# Both should succeed
|
||||
assert match?({:ok, _}, result1)
|
||||
assert match?({:ok, _}, result2)
|
||||
assert match?({:ok, _, _}, result1)
|
||||
assert match?({:ok, _, _}, result2)
|
||||
|
||||
# One should have created cycles, the other should have empty list (idempotent)
|
||||
{:ok, cycles1} = result1
|
||||
{:ok, cycles2} = result2
|
||||
{:ok, cycles1, _} = result1
|
||||
{:ok, cycles2, _} = result2
|
||||
|
||||
# Combined should not have duplicates
|
||||
all_cycles = cycles1 ++ cycles2
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue