fix(billing-v2-c): per-tenant Mail-фильтр в idempotent-тесте sweep-job

liderra_testing persistent (RefreshDatabase off) — DemoSeeder тенанты
могут попасть в sweep и тоже получить BalanceFrozenMail. Без per-tenant
фильтра Mail::assertNotQueued() ловил 154 фоновых письма и валил тест.

Логика BalancePreflightSweepJob корректна — фикс только в test isolation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-05-25 03:28:00 +03:00
parent cf9717d5f2
commit 458d46e9fd
@@ -56,7 +56,9 @@ it('is idempotent — does not re-freeze already frozen tenant', function () {
(new BalancePreflightSweepJob)->handle();
// Дата заморозки не перезаписана, повторного письма нет.
// Дата заморозки не перезаписана; для ЭТОГО tenant повторного письма нет.
// NB: per-tenant фильтр, т.к. liderra_testing persistent (DemoSeeder тенанты
// могут попасть в sweep и тоже получить BalanceFrozenMail — не наш ответ).
expect($tenant->fresh()->frozen_by_balance_at->timestamp)->toBe($frozenAt->timestamp);
Mail::assertNotQueued(BalanceFrozenMail::class);
Mail::assertNotQueued(BalanceFrozenMail::class, fn ($mail) => $mail->tenant->id === $tenant->id);
});