cfb2b59584
* [#523] added way to manage attendance for delegated calendars * [DELEGATION] #523 & #524 changed eventURL calculation for delegated events to have the rigth one * [#524] added drag and drop authorisation to delegated event * [#524] added tests * [#524] support for the permission access * [#524] no edit when delegated event is not public
103 lines
2.7 KiB
TypeScript
103 lines
2.7 KiB
TypeScript
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" },
|
|
owner: { emails: ["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(<CalendarLayout />, 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();
|
|
});
|
|
});
|