[tests] fixed broken test
This commit is contained in:
@@ -1,17 +1,20 @@
|
|||||||
import { screen, fireEvent } from "@testing-library/react";
|
import { screen, fireEvent, waitFor } from "@testing-library/react";
|
||||||
import * as eventThunks from "../../../src/features/Calendars/CalendarSlice";
|
import * as eventThunks from "../../../src/features/Calendars/CalendarSlice";
|
||||||
import { renderWithProviders } from "../../utils/Renderwithproviders";
|
import { renderWithProviders } from "../../utils/Renderwithproviders";
|
||||||
import EventPopover from "../../../src/features/Events/EventModal";
|
import EventPopover from "../../../src/features/Events/EventModal";
|
||||||
import { DateSelectArg } from "@fullcalendar/core";
|
import { DateSelectArg } from "@fullcalendar/core";
|
||||||
import preview from "jest-preview";
|
import preview from "jest-preview";
|
||||||
|
import { formatDateToYYYYMMDDTHHMMSS } from "../../../src/utils/dateUtils";
|
||||||
|
|
||||||
describe("EventPopover", () => {
|
describe("EventPopover", () => {
|
||||||
const mockOnClose = jest.fn();
|
const mockOnClose = jest.fn();
|
||||||
jest.mock("crypto");
|
const mockSetSelectedRange = jest.fn();
|
||||||
|
const mockCalendarRef = { current: { select: jest.fn() } } as any;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
jest.clearAllMocks();
|
jest.clearAllMocks();
|
||||||
});
|
});
|
||||||
|
|
||||||
const preloadedState = {
|
const preloadedState = {
|
||||||
user: {
|
user: {
|
||||||
userData: {
|
userData: {
|
||||||
@@ -41,22 +44,25 @@ describe("EventPopover", () => {
|
|||||||
pending: false,
|
pending: false,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const renderPopover = (
|
|
||||||
selectedRange = {
|
const defaultSelectedRange = {
|
||||||
startStr: "2025-07-18T09:00",
|
startStr: "2025-07-18T09:00",
|
||||||
endStr: "2025-07-18T10:00",
|
endStr: "2025-07-18T10:00",
|
||||||
start: new Date("2025-07-18T09:00"),
|
start: new Date("2025-07-18T09:00"),
|
||||||
end: new Date("2025-07-18T10:00"),
|
end: new Date("2025-07-18T10:00"),
|
||||||
allDay: false,
|
allDay: false,
|
||||||
resource: undefined,
|
resource: undefined,
|
||||||
} as unknown as DateSelectArg
|
} as unknown as DateSelectArg;
|
||||||
) => {
|
|
||||||
|
const renderPopover = (selectedRange = defaultSelectedRange) => {
|
||||||
renderWithProviders(
|
renderWithProviders(
|
||||||
<EventPopover
|
<EventPopover
|
||||||
anchorEl={document.body}
|
anchorEl={document.body}
|
||||||
open={true}
|
open={true}
|
||||||
onClose={mockOnClose}
|
onClose={mockOnClose}
|
||||||
selectedRange={selectedRange}
|
selectedRange={selectedRange}
|
||||||
|
setSelectedRange={mockSetSelectedRange}
|
||||||
|
calendarRef={mockCalendarRef}
|
||||||
/>,
|
/>,
|
||||||
preloadedState
|
preloadedState
|
||||||
);
|
);
|
||||||
@@ -70,7 +76,6 @@ describe("EventPopover", () => {
|
|||||||
expect(screen.getByLabelText("Title")).toBeInTheDocument();
|
expect(screen.getByLabelText("Title")).toBeInTheDocument();
|
||||||
expect(screen.getByLabelText("Start")).toBeInTheDocument();
|
expect(screen.getByLabelText("Start")).toBeInTheDocument();
|
||||||
expect(screen.getByLabelText("End")).toBeInTheDocument();
|
expect(screen.getByLabelText("End")).toBeInTheDocument();
|
||||||
expect(screen.getByLabelText("All day")).toBeInTheDocument();
|
|
||||||
expect(screen.getByLabelText("Description")).toBeInTheDocument();
|
expect(screen.getByLabelText("Description")).toBeInTheDocument();
|
||||||
expect(screen.getByLabelText("Location")).toBeInTheDocument();
|
expect(screen.getByLabelText("Location")).toBeInTheDocument();
|
||||||
expect(screen.getByLabelText("Repetition")).toBeInTheDocument();
|
expect(screen.getByLabelText("Repetition")).toBeInTheDocument();
|
||||||
@@ -82,16 +87,14 @@ describe("EventPopover", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("fills start from selectedRange", () => {
|
it("fills start from selectedRange", () => {
|
||||||
const selectedRange = {
|
renderPopover({
|
||||||
startStr: "2026-07-20T10:00",
|
startStr: "2026-07-20T10:00",
|
||||||
endStr: "2026-07-20T12:00",
|
endStr: "2026-07-20T12:00",
|
||||||
start: new Date("2026-07-20T10:00"),
|
start: new Date("2026-07-20T10:00"),
|
||||||
end: new Date("2026-07-20T12:00"),
|
end: new Date("2026-07-20T12:00"),
|
||||||
allDay: false,
|
allDay: false,
|
||||||
resource: undefined,
|
} as unknown as DateSelectArg);
|
||||||
};
|
|
||||||
|
|
||||||
renderPopover(selectedRange as unknown as DateSelectArg);
|
|
||||||
expect(screen.getByLabelText("Start")).toHaveValue("2026-07-20T10:00");
|
expect(screen.getByLabelText("Start")).toHaveValue("2026-07-20T10:00");
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -162,30 +165,36 @@ describe("EventPopover", () => {
|
|||||||
fireEvent.change(screen.getByLabelText("Location"), {
|
fireEvent.change(screen.getByLabelText("Location"), {
|
||||||
target: { value: newEvent.location },
|
target: { value: newEvent.location },
|
||||||
});
|
});
|
||||||
|
preview.debug();
|
||||||
let receivedPayload: any = null;
|
const spy = jest
|
||||||
|
.spyOn(eventThunks, "putEventAsync")
|
||||||
jest.spyOn(eventThunks, "putEventAsync").mockImplementation((payload) => {
|
.mockImplementation((payload) => {
|
||||||
receivedPayload = payload;
|
return () => Promise.resolve(payload) as any;
|
||||||
return () => Promise.resolve() as any;
|
});
|
||||||
});
|
|
||||||
|
|
||||||
fireEvent.click(screen.getByText("Save"));
|
fireEvent.click(screen.getByText("Save"));
|
||||||
expect(eventThunks.putEventAsync).toHaveBeenCalled();
|
|
||||||
|
|
||||||
// Extract dispatched action argument
|
await waitFor(() => {
|
||||||
console.log(receivedPayload);
|
expect(spy).toHaveBeenCalled();
|
||||||
expect(receivedPayload.cal).toBe(
|
});
|
||||||
|
|
||||||
|
const receivedPayload = spy.mock.calls[0][0];
|
||||||
|
|
||||||
|
expect(receivedPayload.cal).toEqual(
|
||||||
preloadedState.calendars.list["667037022b752d0026472254/cal1"]
|
preloadedState.calendars.list["667037022b752d0026472254/cal1"]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
console.log(receivedPayload.newEvent.start);
|
||||||
expect(receivedPayload.newEvent.title).toBe(newEvent.title);
|
expect(receivedPayload.newEvent.title).toBe(newEvent.title);
|
||||||
expect(receivedPayload.newEvent.description).toBe(newEvent.description);
|
expect(receivedPayload.newEvent.description).toBe(newEvent.description);
|
||||||
expect(receivedPayload.newEvent.start.toString()).toBe(
|
expect(
|
||||||
new Date(newEvent.start).toString()
|
formatDateToYYYYMMDDTHHMMSS(receivedPayload.newEvent.start).split("T")[0]
|
||||||
);
|
).toBe(formatDateToYYYYMMDDTHHMMSS(new Date(newEvent.start)).split("T")[0]);
|
||||||
expect(receivedPayload.newEvent.end.toString()).toBe(
|
expect(
|
||||||
new Date(newEvent.end).toString()
|
formatDateToYYYYMMDDTHHMMSS(
|
||||||
);
|
receivedPayload.newEvent.end || new Date()
|
||||||
|
).split("T")[0]
|
||||||
|
).toBe(formatDateToYYYYMMDDTHHMMSS(new Date(newEvent.end)).split("T")[0]);
|
||||||
expect(receivedPayload.newEvent.location).toBe(newEvent.location);
|
expect(receivedPayload.newEvent.location).toBe(newEvent.location);
|
||||||
expect(receivedPayload.newEvent.organizer).toEqual(newEvent.organizer);
|
expect(receivedPayload.newEvent.organizer).toEqual(newEvent.organizer);
|
||||||
expect(receivedPayload.newEvent.repetition).toEqual(newEvent.repetition);
|
expect(receivedPayload.newEvent.repetition).toEqual(newEvent.repetition);
|
||||||
|
|||||||
Reference in New Issue
Block a user