import { screen } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; import { WorkOrderSlideOverTabs } from "@/app/(protected)/workorders/_components/detail/work-order-slide-over-tabs"; import type { useWorkOrderSlideOver } from "@/app/(protected)/workorders/_components/detail/use-work-order-slide-over"; import type { WorkOrderTableRow } from "@/domain/work-orders/types/work-order-table-row"; import { renderWithProviders } from "@/test/test-utils"; type SlideOverState = ReturnType; function baseRow(overrides: Partial = {}): WorkOrderTableRow { return { id: 42, woNumber: "WO-42", site: "SEA1", type: "PM", severity: null, dispatcherId: "u1", dispatcherName: "Dispatcher", scheduledOn: "2026-07-20", completedDate: "", targetWeek: "", dayGroup: "07/20", dayLabel: "Mon", location: "Seattle", locationId: "loc-1", pm: "HVAC", serviceNotes: "", extraServices: [], company: "Vendor Co", tech: "Tech", techPhone: "", vendorId: "v1", apptStart: "", apptEnd: "", apptTime: "", status: "Scheduled", docStatus: "No", pocName: "", pocPhone: "", pocNotes: "", additionalContacts: [], dueDate: "", rescheduleCount: 0, carriedOver: 0, originalWeek: "", originalDate: "", isPastDue: false, scheduleWeekOnly: false, mediaCount: 0, title: "PM — SEA1", priority: "Sev 3", primaryDispatchId: null, rowVersion: "v1", dispatchRowVersion: "", flagColor: null, isAddOn: false, avetaRequired: false, upliftSummary: { hasUplift: false, pendingCount: 0 }, ...overrides, }; } function extrasState(editing: boolean, persisted: boolean, draft: boolean): SlideOverState { return { error: null, detailForRow: undefined, isLoading: false, infoSource: baseRow({ avetaRequired: persisted }), activeDraft: baseRow({ avetaRequired: draft }), showDetailSkeleton: false, errorMessage: "", refetch: vi.fn(), extrasUploads: [], isExtrasReadOnly: true, mediaPending: false, uploadExtraFiles: vi.fn(), removeMedia: vi.fn(), editing, } as unknown as SlideOverState; } function renderExtras(state: SlideOverState) { return renderWithProviders( , ); } describe("WorkOrderSlideOverTabs Extras Aveta draft", () => { it("shows the Extras Aveta indicator from an unsaved false-to-true draft", () => { renderExtras(extrasState(true, false, true)); expect(screen.getByText("Extra Documents")).toBeInTheDocument(); expect(screen.getByText("Aveta")).toBeInTheDocument(); }); it("hides the Extras Aveta indicator from an unsaved true-to-false draft", () => { renderExtras(extrasState(true, true, false)); expect(screen.getByText("Extra Documents")).toBeInTheDocument(); expect(screen.queryByText("Aveta")).not.toBeInTheDocument(); }); it("keeps the persisted Aveta indicator when not editing", () => { renderExtras(extrasState(false, true, false)); expect(screen.getByText("Aveta")).toBeInTheDocument(); }); });