mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-05 07:12:06 +00:00
Dispatchers can flag Aveta on Service and Notes and filter those rows without a site-level attribute.
62 lines
2.2 KiB
TypeScript
62 lines
2.2 KiB
TypeScript
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(<ThemeProvider theme={muiTheme}>{ui}</ThemeProvider>);
|
|
}
|
|
|
|
describe("DueDateCalendarDialog", () => {
|
|
it("saves the selected day as ISO and closes", () => {
|
|
const onSave = vi.fn();
|
|
const onOpenChange = vi.fn();
|
|
|
|
renderWithTheme(
|
|
<DueDateCalendarDialog open onOpenChange={onOpenChange} value="2026-07-15" onSave={onSave} />,
|
|
);
|
|
|
|
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(
|
|
<DueDateCell type="Emergency" value="2026-07-15" onSave={onSave} />,
|
|
);
|
|
|
|
fireEvent.click(screen.getByRole("button", { name: "Due Date" }));
|
|
expect(screen.getByRole("dialog")).toBeInTheDocument();
|
|
|
|
rerender(
|
|
<ThemeProvider theme={muiTheme}>
|
|
<DueDateCell type="PM" value="2026-07-15" onSave={onSave} />
|
|
</ThemeProvider>,
|
|
);
|
|
|
|
expect(screen.queryByRole("dialog")).not.toBeInTheDocument();
|
|
});
|
|
});
|
|
|
|
describe("WizardDueDateField", () => {
|
|
it("opens a dialog when type is Emergency", () => {
|
|
renderWithTheme(
|
|
<WizardDueDateField type="Emergency" value="" placeholder="No due date" onChange={vi.fn()} />,
|
|
);
|
|
|
|
fireEvent.click(screen.getByRole("button", { name: /No due date/i }));
|
|
expect(screen.getByRole("dialog")).toBeInTheDocument();
|
|
});
|
|
});
|