From 7a261e4830f7c3aae205b09125b5c19f65ba3109 Mon Sep 17 00:00:00 2001 From: "pulse-triage[bot]" <249995291+pulse-triage[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2026 09:26:35 +0100 Subject: [PATCH] test(alerts): cover held delivery rows across log outages Existing outage coverage exercises attempted deliveries only. Protect held-only histories from appearing readable during an outage, and verify recovery uses the current held state rather than stale rows or a misleading empty result. Change-source: pulse-maintainer --- .../alerts/AlertDeliveryLogCard.test.tsx | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/frontend-modern/src/features/alerts/AlertDeliveryLogCard.test.tsx b/frontend-modern/src/features/alerts/AlertDeliveryLogCard.test.tsx index 9b64f2481..312340f15 100644 --- a/frontend-modern/src/features/alerts/AlertDeliveryLogCard.test.tsx +++ b/frontend-modern/src/features/alerts/AlertDeliveryLogCard.test.tsx @@ -273,6 +273,51 @@ describe('AlertDeliveryLogCard', () => { expect(screen.queryByRole('list')).not.toBeInTheDocument(); }); + it('hides held rows during an outage and restores their current state on recovery', () => { + const [unavailable, setUnavailable] = createSignal(false); + const [heldEvents, setHeldEvents] = createSignal([ + { + id: 4, + occurredAt: '2026-09-07T08:00:00Z', + type: 'notification_deferred', + alertId: 'quiet-hours-alert', + resourceName: 'nas-quiet', + alertType: 'usage', + reason: 'quiet_hours:performance', + message: 'Notification deferred by quiet hours.', + }, + ]); + render(() => ( + + )); + + expect(screen.getByText('Deferred')).toBeInTheDocument(); + setUnavailable(true); + expect(screen.getByRole('alert')).toHaveTextContent(/could not read the delivery log/); + expect(screen.queryByRole('list')).not.toBeInTheDocument(); + expect(screen.queryByText('nas-quiet (usage)')).not.toBeInTheDocument(); + expect(screen.queryByText(/No alert deliveries were attempted/)).not.toBeInTheDocument(); + + setUnavailable(false); + expect(screen.queryByRole('alert')).not.toBeInTheDocument(); + expect(screen.getByText('Deferred')).toBeInTheDocument(); + expect(screen.getAllByRole('listitem')).toHaveLength(1); + + setUnavailable(true); + setHeldEvents([]); + setUnavailable(false); + expect(screen.queryByText('Deferred')).not.toBeInTheDocument(); + expect(screen.queryByRole('list')).not.toBeInTheDocument(); + expect(screen.getByText(/No alert deliveries were attempted/)).toBeInTheDocument(); + }); + it('reports an unreadable log as unavailable instead of empty', () => { render(() => (