shoc-frontend-new/src/test/domain/work-orders/utils/enrich-detail-closability-from-board.test.ts
arthur.bassi 5e3b7b8057 fix(work-orders): use authoritative type/doc/media for detail closability
Stop treating integration source as WorkOrderType.
Enrich detail from board detail for SH-114/SH-183 gates.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 14:06:54 -03:00

57 lines
1.6 KiB
TypeScript

import { describe, expect, it } from "vitest";
import type { WorkOrderBoardDetail } from "@/domain/work-orders/types/work-order-board-detail";
import type { WorkOrderDetail } from "@/domain/work-orders/types/work-order-detail";
import { enrichDetailClosabilityFromBoard } from "@/domain/work-orders/utils/enrich-detail-closability-from-board";
const baseDetail = {
id: 1,
internalWONumber: "SH-1",
workOrderNumber: "20260623001",
title: "Test",
location: "",
locationId: "",
locationZip: "",
assignedTo: "Alice",
dueDate: "",
createdDate: "",
createdDateFull: "",
description: "",
priority: "",
status: "Open",
po: "",
tt: "",
problem: "HVAC",
trade: "",
subTrade: "",
vendorNTE: "",
scheduledDate: "",
completedDate: "2026-07-15",
source: "PM",
type: "" as const,
docStatus: "" as const,
mediaCount: 0,
comments: [],
auditLog: [],
dispatches: [],
} satisfies WorkOrderDetail;
describe("enrichDetailClosabilityFromBoard", () => {
it("returns detail unchanged when board is undefined", () => {
expect(enrichDetailClosabilityFromBoard(baseDetail, undefined)).toBe(baseDetail);
});
it("overlays authoritative type, docStatus, and mediaCount from board", () => {
const board = {
info: { type: "PM" },
completion: { docStatus: "Yes" },
media: [{ id: "1" }, { id: "2" }],
} as WorkOrderBoardDetail;
const enriched = enrichDetailClosabilityFromBoard(baseDetail, board);
expect(enriched.type).toBe("PM");
expect(enriched.docStatus).toBe("Yes");
expect(enriched.mediaCount).toBe(2);
expect(enriched.source).toBe("PM");
expect(enriched.problem).toBe("HVAC");
});
});