d6be9e4574
Replace the wall-clock dance with a direct EventStoreProjection construction wired to a controllable nowProvider. Both events are inserted with expirations safely in the future so the SQL reject_expired_events trigger never fires; the test then bumps the fake clock and replays the StoreChange.DeleteExpired the observable would emit after a sweep. Tests the projection's reaction to the sweep signal — which is what this case was always about — without a 6s real-time delay or a flake window. Full SQL sweep behavior remains covered by ExpirationTest.testDeletingExpiredEvents.