diff --git a/app/Prevention/Actions/YearlyRememberAction.php b/app/Prevention/Actions/YearlyRememberAction.php index 6f60f958..e0c0cf60 100644 --- a/app/Prevention/Actions/YearlyRememberAction.php +++ b/app/Prevention/Actions/YearlyRememberAction.php @@ -44,7 +44,10 @@ class YearlyRememberAction Cache::remember( 'prevention-' . $member->id, (int) now()->diffInSeconds(now()->addWeeks($settings->freshRememberInterval)), - fn() => Mail::send($this->createMail($member, $preventions)) + function () use ($member, $preventions) { + Mail::send($this->createMail($member, $preventions)); + return 0; + } ); } } diff --git a/tests/Feature/Member/PreventionTest.php b/tests/Feature/Member/PreventionTest.php index 25ac27e1..c42332ae 100644 --- a/tests/Feature/Member/PreventionTest.php +++ b/tests/Feature/Member/PreventionTest.php @@ -255,6 +255,18 @@ it('remembers members yearly', function ($date, $shouldSend) { [fn() => now()->subYears(5)->subDay(), false], ]); +it('remembers yearly only once', function () { + Mail::fake(); + createMember(['efz' => now()->subYears(5), 'ps_at' => now(), 'has_vk' => true]); + + YearlyRememberAction::run(); + YearlyRememberAction::run(); + YearlyRememberAction::run(); + + Mail::assertSentCount(1); + Mail::assertSent(YearlyMail::class, fn($mail) => $mail->preventions->first()->expires->isSameDay(now())); +}); + it('testItDoesntRememberParticipantThatHasNoMail', function () { Mail::fake(); $form = createForm();