import { RootState } from "@/app/store"; import EventDuplication from "@/components/Event/EventDuplicate"; import EventPreviewModal from "@/features/Events/EventDisplayPreview"; import EventPopover from "@/features/Events/EventModal"; import { fireEvent, screen, waitFor } from "@testing-library/react"; import { renderWithProviders } from "../utils/Renderwithproviders"; const day = new Date(); const preloadedState = { user: { userData: { sub: "test", email: "test@test.com", sid: "aiYbWZSk2g0F+LrQeD7Dg4QcUMR8R/zTZdZBiA7N6Ro", openpaasId: "667037022b752d0026472254", }, organiserData: { cn: "test", cal_address: "mailto:test@test.com", }, }, calendars: { list: { "667037022b752d0026472254/cal1": { id: "667037022b752d0026472254/cal1", name: "Calendar", color: "#FF0000", events: { event1: { uid: "event1", URL: "calendars/667037022b752d0026472254/cal1/event1.ics", title: "Test Event", calId: "667037022b752d0026472254/cal1", start: day.toISOString(), end: day.toISOString(), timezone: "UTC", organizer: { cn: "test", cal_address: "test@test.com" }, attendee: [ { cn: "test", cal_address: "test@test.com", partstat: "NEEDS-ACTION", rsvp: "TRUE", role: "REQ-PARTICIPANT", cutype: "INDIVIDUAL", }, { cn: "John", cal_address: "john@test.com", partstat: "NEEDS-ACTION", rsvp: "TRUE", role: "REQ-PARTICIPANT", cutype: "INDIVIDUAL", }, ], }, }, }, }, pending: false, }, } as unknown as RootState; describe("EventDuplication", () => { it("calls onOpenDuplicate when button clicked", () => { const handleClose = jest.fn(); const onOpenDuplicate = jest.fn(); renderWithProviders( , preloadedState ); fireEvent.click( screen.getByRole("menuitem", { name: "eventDuplication.duplicateEvent" }) ); expect(onOpenDuplicate).toHaveBeenCalled(); }); }); describe("EventPopover", () => { it("renders with event data", () => { renderWithProviders( , preloadedState ); expect(screen.getByDisplayValue(/Test Event/i)).toBeInTheDocument(); }); it("saves duplicated event when Save is clicked", () => { const onClose = jest.fn(); renderWithProviders( , preloadedState ); fireEvent.change(screen.getByLabelText(/Title/i), { target: { value: "Duplicated Event" }, }); fireEvent.click(screen.getByRole("button", { name: "actions.save" })); waitFor(() => expect(onClose).toHaveBeenCalled()); }); }); describe("EventDisplayModal", () => { it("shows duplication button and opens duplication form", () => { renderWithProviders( , preloadedState ); fireEvent.click(screen.getByTestId("MoreVertIcon")); fireEvent.click( screen.getByRole("menuitem", { name: "eventDuplication.duplicateEvent" }) ); expect( screen.getAllByText("eventDuplication.duplicateEvent")[1] ).toBeInTheDocument(); expect( screen.getByDisplayValue( preloadedState.calendars.list["667037022b752d0026472254/cal1"].events .event1.title as string ) ).toBeInTheDocument(); }); });