import { ThemeProvider } from "@mui/material";
import { fireEvent, render, screen } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { DueDateCalendarDialog } from "@/app/(protected)/workorders/_components/list/table/cells/due-date-calendar-dialog";
import { DueDateCell } from "@/app/(protected)/workorders/_components/list/table/cells/due-date-cell";
import { WizardDueDateField } from "@/app/(protected)/workorders/_components/wizard/wizard-due-date-field";
import { muiTheme } from "@/lib/theme/mui-theme";
function renderWithTheme(ui: React.ReactElement) {
return render({ui});
}
describe("DueDateCalendarDialog", () => {
it("saves the selected day as ISO and closes", () => {
const onSave = vi.fn();
const onOpenChange = vi.fn();
renderWithTheme(
,
);
expect(screen.getByRole("dialog")).toBeInTheDocument();
expect(screen.getByText("Due Date")).toBeInTheDocument();
fireEvent.click(screen.getByRole("button", { name: "20" }));
expect(onSave).toHaveBeenCalledWith("2026-07-20");
expect(onOpenChange).toHaveBeenCalledWith(false);
});
});
describe("DueDateCell", () => {
it("opens a dialog for Emergency and keeps popover for PM", () => {
const onSave = vi.fn();
const { rerender } = renderWithTheme(
,
);
fireEvent.click(screen.getByRole("button", { name: "Due Date" }));
expect(screen.getByRole("dialog")).toBeInTheDocument();
rerender(
,
);
expect(screen.queryByRole("dialog")).not.toBeInTheDocument();
});
});
describe("WizardDueDateField", () => {
it("opens a dialog when type is Emergency", () => {
renderWithTheme(
,
);
fireEvent.click(screen.getByRole("button", { name: /No due date/i }));
expect(screen.getByRole("dialog")).toBeInTheDocument();
});
});