import { describe, it, expect } from "vitest"; import { MMWorkOrderOperationStatus, MMWorkOrderStatus, normalizeMMStatus, } from "./erp-types.js"; describe("normalizeMMStatus", () => { it("trims, uppercases, and collapses underscores/whitespace to single spaces", () => { expect(normalizeMMStatus(" released ")).toBe(MMWorkOrderStatus.RELEASED); expect(normalizeMMStatus("NOT_RELEASED")).toBe(MMWorkOrderStatus.NOT_RELEASED); expect(normalizeMMStatus("not released")).toBe(MMWorkOrderOperationStatus.NOT_RELEASED); }); it("folds the CANCELED spelling into CANCELLED", () => { expect(normalizeMMStatus("Canceled")).toBe(MMWorkOrderStatus.CANCELLED); expect(normalizeMMStatus("CANCELLED")).toBe(MMWorkOrderStatus.CANCELLED); }); it("maps null/undefined/blank to the empty string", () => { expect(normalizeMMStatus(null)).toBe(""); expect(normalizeMMStatus(undefined)).toBe(""); expect(normalizeMMStatus(" ")).toBe(""); }); it("leaves enum members unchanged (they are already canonical)", () => { for (const value of [ ...Object.values(MMWorkOrderStatus), ...Object.values(MMWorkOrderOperationStatus), ]) { expect(normalizeMMStatus(value)).toBe(value); } }); });