mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-06 05:22:04 +00:00
* docs(work-orders): add pending BE contract checklist for design parity gaps * feat(work-orders): confirm dialog when duplicate wo number detected * fix(work-orders): show duplicate wo number dialog on wizard create * docs(work-orders): align pr description with jira and qa residuals * style(work-orders): prettier wizard duplicate dialog files * refactor(workorders): extract wizard state hook and list overlays * fix(work-orders): check duplicate numbers globally * fix(work-orders): exhaust fuzzy pages for exact WO number lookup Prevent accepting duplicates that fall outside the first fuzzy search page. * style(work-orders): format editable WO number cell for Prettier gate * fix(work-orders): 0-based WO search page and stale duplicate guard * fix(work-orders): sync draft WO# ref in effect for duplicate guard [SH-189] * fix(work-orders): extract WO number editor under max-lines gate Co-authored-by: Cursor <cursoragent@cursor.com> * fix(work-orders): harden duplicate WO number checks [SH-189] * fix(work-orders): sync wizard refs in effects and exhaust duplicate WO lookup Co-authored-by: Cursor <cursoragent@cursor.com> * fix(work-orders): extract hooks to satisfy max-lines governance gate Co-authored-by: Cursor <cursoragent@cursor.com> * style(work-orders): format wizard state hook for Prettier gate Co-authored-by: Cursor <cursoragent@cursor.com> * fix(work-orders): search one-character WO numbers for duplicates --------- Co-authored-by: Cursor <cursoragent@cursor.com>
58 lines
1.8 KiB
TypeScript
58 lines
1.8 KiB
TypeScript
import { fireEvent, screen } from "@testing-library/react";
|
|
import { describe, expect, it, vi } from "vitest";
|
|
import { DuplicateWoNumberDialog } from "@/app/(protected)/workorders/_components/list/duplicate-wo-number-dialog";
|
|
import type { WorkOrderTableRow } from "@/domain/work-orders/types/work-order-table-row";
|
|
import { renderWithProviders } from "@/test/test-utils";
|
|
|
|
const existingRow = { id: "wo-99", woNumber: "12345678901" } as WorkOrderTableRow;
|
|
|
|
describe("DuplicateWoNumberDialog", () => {
|
|
it("shows the duplicate title and work order number when open", () => {
|
|
renderWithProviders(
|
|
<DuplicateWoNumberDialog
|
|
open
|
|
existing={existingRow}
|
|
onDismiss={vi.fn()}
|
|
onViewExisting={vi.fn()}
|
|
/>,
|
|
);
|
|
|
|
expect(screen.getByRole("dialog")).toBeInTheDocument();
|
|
expect(screen.getByText("Duplicate Work Order Number")).toBeInTheDocument();
|
|
expect(screen.getByText(/12345678901/)).toBeInTheDocument();
|
|
});
|
|
|
|
it("calls onViewExisting when View existing is clicked", () => {
|
|
const onViewExisting = vi.fn();
|
|
|
|
renderWithProviders(
|
|
<DuplicateWoNumberDialog
|
|
open
|
|
existing={existingRow}
|
|
onDismiss={vi.fn()}
|
|
onViewExisting={onViewExisting}
|
|
/>,
|
|
);
|
|
|
|
fireEvent.click(screen.getByRole("button", { name: "View existing" }));
|
|
|
|
expect(onViewExisting).toHaveBeenCalledWith(existingRow);
|
|
});
|
|
|
|
it("calls onDismiss when Dismiss is clicked", () => {
|
|
const onDismiss = vi.fn();
|
|
|
|
renderWithProviders(
|
|
<DuplicateWoNumberDialog
|
|
open
|
|
existing={existingRow}
|
|
onDismiss={onDismiss}
|
|
onViewExisting={vi.fn()}
|
|
/>,
|
|
);
|
|
|
|
fireEvent.click(screen.getByRole("button", { name: "Dismiss" }));
|
|
|
|
expect(onDismiss).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|