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(); }); });