shoc-frontend-new/src/test/app/(protected)/workorders/completed-lock-view-only-dialogs.test.tsx
Arthur Bassi 18d80a3c47 feat(work-orders): lock completed work orders with confirmation (SH-115)
Keep flag, comments, and extra docs mutable; require Mark as Complete confirmation.
2026-08-24 12:06:40 -03:00

50 lines
1.6 KiB
TypeScript

import { fireEvent, screen } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { ServiceNotesDialog } from "@/app/(protected)/workorders/_components/list/table/cells/service-notes-dialog";
import { SiteDialog } from "@/app/(protected)/workorders/_components/list/table/cells/site-dialog";
import { renderWithProviders } from "@/test/test-utils";
describe("Completed view-only dialogs", () => {
it("hides Save on a view-only site dialog", () => {
const onSave = vi.fn();
renderWithProviders(
<SiteDialog
open
onOpenChange={vi.fn()}
value="BK5"
locationId="loc-1"
sites={[{ id: "loc-1", name: "BK5" }]}
viewOnly
onSave={onSave}
/>,
{ withAuth: false },
);
expect(screen.getByRole("button", { name: /^close$/i })).toBeInTheDocument();
expect(screen.queryByRole("button", { name: /^save$/i })).not.toBeInTheDocument();
fireEvent.click(screen.getByRole("button", { name: /^close$/i }));
expect(onSave).not.toHaveBeenCalled();
});
it("hides Save on a view-only service notes dialog", () => {
const onSave = vi.fn();
renderWithProviders(
<ServiceNotesDialog
open
onOpenChange={vi.fn()}
pm="HVAC"
extraServices={[]}
serviceNotes="Check filters"
pmTypes={["HVAC"]}
viewOnly
onSave={onSave}
/>,
{ withAuth: false },
);
expect(screen.getByRole("button", { name: /^close$/i })).toBeInTheDocument();
expect(screen.queryByRole("button", { name: /^save$/i })).not.toBeInTheDocument();
});
});