diff --git a/src/test/app/(protected)/workorders/work-orders-board-core-affordances.test.tsx b/src/test/app/(protected)/workorders/work-orders-board-core-affordances.test.tsx index 92cd898b..cfbb716a 100644 --- a/src/test/app/(protected)/workorders/work-orders-board-core-affordances.test.tsx +++ b/src/test/app/(protected)/workorders/work-orders-board-core-affordances.test.tsx @@ -1,4 +1,4 @@ -import { fireEvent, screen } from "@testing-library/react"; +import { fireEvent, screen, waitForElementToBeRemoved } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; import { WorkOrdersListHeader } from "@/app/(protected)/workorders/_components/list/work-orders-list-header"; import { CompDocCell } from "@/app/(protected)/workorders/_components/list/table/cells/comp-doc-cell"; @@ -133,6 +133,17 @@ vi.mock("@/domain/settings/dropdown-options/use-cases/use-dropdown-options-by-ca useDropdownOptionsByCategory: () => ({ data: [] }), })); +vi.mock("@/domain/locations/use-cases/use-location-detail", () => ({ + useLocationDetail: () => ({ data: undefined }), +})); + +vi.mock("@/domain/work-orders/use-cases/use-create-work-order-from-wizard", () => ({ + useCreateWorkOrderFromWizard: () => ({ + mutate: vi.fn(), + isPending: false, + }), +})); + vi.mock("@/domain/work-orders/mocks/is-wo-table-mock-enabled", () => ({ isWoTableMockEnabled: () => false, })); @@ -179,14 +190,23 @@ describe("WorkOrdersListHeader slice affordances", () => { }); describe("WorkOrdersListPage board-core public interface", () => { - it("does not render New WO, and View navigates to detail", () => { + it("opens New WO wizard on click, enforces step validation, closes, and View navigates to detail", async () => { navigate.mockReset(); renderWithProviders(, { route: "/workorders", withAuth: false }); - expect(screen.queryByRole("button", { name: /new wo/i })).not.toBeInTheDocument(); expect(screen.queryByRole("button", { name: /view doc|draft/i })).not.toBeInTheDocument(); + fireEvent.click(screen.getByRole("button", { name: /new wo/i })); + + expect(screen.getByRole("dialog")).toBeInTheDocument(); + expect(screen.getByRole("heading", { name: /type & schedule/i })).toBeInTheDocument(); + expect(screen.getByText(/pick a type to continue/i)).toBeInTheDocument(); + expect(screen.getByRole("button", { name: /continue/i })).toBeDisabled(); + + fireEvent.click(screen.getByRole("button", { name: /cancel/i })); + + await waitForElementToBeRemoved(() => screen.queryByRole("dialog")); fireEvent.click(screen.getByRole("button", { name: /view canceled row/i })); expect(navigate).toHaveBeenCalledWith("/workorders/77");