import CalendarLayout from "@/components/Calendar/CalendarLayout"; import { act, fireEvent, screen, waitFor } from "@testing-library/react"; import { renderWithProviders } from "../utils/Renderwithproviders"; describe("Event Error Handling", () => { beforeEach(() => { localStorage.clear(); jest.clearAllMocks(); }); const today = new Date(); const start = new Date(today); start.setHours(10, 0, 0, 0); const end = new Date(today); end.setHours(11, 0, 0, 0); const erroredState = { user: { userData: { sub: "test", email: "test@test.com", sid: "mockSid", openpaasId: "user1", }, tokens: { accessToken: "token" }, }, calendars: { list: { "user1/cal1": { name: "Calendar personal", id: "user1/cal1", color: { light: "#FF0000", dark: "#000" }, ownerEmails: ["alice@example.com"], events: { event1: { id: "event1", calId: "user1/cal1", uid: "event1", title: "Test Event", start: start.toISOString(), end: start.toISOString(), partstat: "ACCEPTED", organizer: { cn: "Alice", cal_address: "alice@example.com", }, attendee: [ { cn: "Alice", partstat: "ACCEPTED", rsvp: "TRUE", role: "REQ-PARTICIPANT", cutype: "INDIVIDUAL", cal_address: "alice@example.com", }, ], }, }, }, }, pending: false, }, }; it("BUGFIX: does not re-report errors after clearing error snackbar", async () => { const consoleWarnSpy = jest.spyOn(console, "warn").mockImplementation(); await act(async () => renderWithProviders(, erroredState) ); await waitFor( () => { expect(screen.getByText("Test Event")); expect(screen.getByRole("alert")).toBeInTheDocument(); }, { timeout: 10000 } ); const closeButton = screen.queryByRole("button", { name: "common.ok" }); if (closeButton) { const initialWarnCount = consoleWarnSpy.mock.calls.length; await act(async () => { fireEvent.click(closeButton); }); await waitFor( () => { expect(screen.queryByRole("alert")).not.toBeInTheDocument(); }, { timeout: 5000 } ); const afterCloseWarnCount = consoleWarnSpy.mock.calls.length; expect(afterCloseWarnCount).toBe(initialWarnCount); } consoleWarnSpy.mockRestore(); }); });