diff --git a/src/test/app/(protected)/workorders/wo-table-unscheduled-highlight.test.tsx b/src/test/app/(protected)/workorders/wo-table-unscheduled-highlight.test.tsx new file mode 100644 index 00000000..011c95a6 --- /dev/null +++ b/src/test/app/(protected)/workorders/wo-table-unscheduled-highlight.test.tsx @@ -0,0 +1,118 @@ +import { renderWithProviders } from "@/test/test-utils"; +import { screen } from "@testing-library/react"; +import { describe, expect, it, vi } from "vitest"; +import { WoTableBody } from "@/app/(protected)/workorders/_components/list/table/wo-table-body"; +import { WoTableRowCells } from "@/app/(protected)/workorders/_components/list/table/wo-table-row-cells"; +import type { WoTableRowHandlers } from "@/app/(protected)/workorders/_components/list/table/wo-table-row"; +import type { ReturnTypeOfUseWorkOrdersTableData } from "@/app/(protected)/workorders/_components/list/table/wo-table-types"; +import type { WorkOrderTableRow } from "@/domain/work-orders/types/work-order-table-row"; + +const HIGHLIGHT_BOX_SHADOW = "0 0 0 2px var(--color-accent)"; + +const unscheduledRow: WorkOrderTableRow = { + id: 42, + woNumber: "WO-42", + site: "CHI-1042", + type: "PM", + dispatcherId: "u1", + dispatcherName: "Test Dispatcher", + scheduledOn: "", + targetWeek: "", + dayGroup: "", + dayLabel: "", + location: "Chicago Loop", + locationId: "mock-loc-1", + pm: "HVAC — Quarterly PM", + serviceNotes: "", + extraServices: [], + vendorId: "", + company: "", + tech: "", + techPhone: "", + apptStart: "", + apptEnd: "", + apptTime: "", + status: "Pending", + docStatus: "No", + pocName: "", + pocPhone: "", + pocNotes: "", + dueDate: "2026-07-15", + rescheduleCount: 0, + carriedOver: 0, + originalWeek: "", + originalDate: "", + isPastDue: false, + scheduleWeekOnly: false, + mediaCount: 0, + title: "", + priority: "", + primaryDispatchId: null, + rowVersion: "", + dispatchRowVersion: "", + flagColor: null, +}; + +const handlers: WoTableRowHandlers = { + onRowClick: vi.fn(), + onView: vi.fn(), + onEdit: vi.fn(), + onOpenMedia: vi.fn(), + onPatch: vi.fn(), + onScheduleDate: vi.fn(), + onScheduleWeek: vi.fn(), + onOpenSlideOver: vi.fn(), + onReorder: vi.fn(), + onDragStart: vi.fn(), + onDragOver: vi.fn(), + onDrop: vi.fn(), + onDragEnd: vi.fn(), +}; + +/** Mirrors WoTable.renderRow: body `true` → Schedule On only. */ +function renderUnscheduledHarness() { + const tableData = { + advActive: false, + unscheduled: [unscheduledRow], + unschedOpen: true, + draftDayKey: null, + displayGroups: [], + todayKey: null, + startDayDraft: vi.fn(), + setUnschedOpen: vi.fn(), + } as unknown as ReturnTypeOfUseWorkOrdersTableData; + + const renderRow = (row: WorkOrderTableRow, forceScheduleHighlight = false) => ( +