shoc-frontend-new/src/test/app/(protected)/workorders/aveta-service-notes.test.tsx
Arthur Bassi 0a2544fae4 fix(work-orders): persist Extra Docs Aveta category round-trip
Keep Extra uploads uncategorized until the dispatcher picks Aveta.
Drive the shield from hasAvetaDocument after reopen.
2026-08-25 15:11:25 -03:00

66 lines
1.9 KiB
TypeScript

import { fireEvent, screen } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { PMTypeCell } from "@/app/(protected)/workorders/_components/list/table/cells/pm-type-cell";
import { ServiceNotesDialog } from "@/app/(protected)/workorders/_components/list/table/cells/service-notes-dialog";
import { renderWithProviders } from "@/test/test-utils";
describe("Aveta Service & Notes", () => {
it("shows the Aveta shield on the Service cell when required", () => {
renderWithProviders(
<PMTypeCell
value="HVAC"
pmTypes={["HVAC"]}
serviceNotes=""
extraServices={[]}
avetaRequired
onSave={vi.fn()}
onSaveDetails={vi.fn()}
/>,
);
expect(screen.getByLabelText("Aveta required")).toBeInTheDocument();
});
it("shows the green Aveta shield when the document is attached", () => {
renderWithProviders(
<PMTypeCell
value="HVAC"
pmTypes={["HVAC"]}
serviceNotes=""
extraServices={[]}
avetaRequired
avetaAttached
onSave={vi.fn()}
onSaveDetails={vi.fn()}
/>,
);
expect(screen.getByLabelText("Aveta attached")).toBeInTheDocument();
});
it("persists avetaRequired from Service & Notes", () => {
const onSave = vi.fn();
renderWithProviders(
<ServiceNotesDialog
open
onOpenChange={vi.fn()}
pm="HVAC"
extraServices={[]}
serviceNotes=""
avetaRequired={false}
pmTypes={["HVAC"]}
onSave={onSave}
/>,
);
fireEvent.click(screen.getByRole("checkbox", { name: /Requires Aveta documentation/i }));
fireEvent.click(screen.getByRole("button", { name: "Save" }));
expect(onSave).toHaveBeenCalledWith(
expect.objectContaining({
pm: "HVAC",
avetaRequired: true,
}),
);
});
});