import { describe, expect, it } from "vitest"; import { resolveNoSpreadsheetOutcome } from "@/services/parse/pipeline"; describe("resolveNoSpreadsheetOutcome", () => { it("M4-like INSTRUCTION_LABEL + pdf → PARSED / null", () => { expect( resolveNoSpreadsheetOutcome({ mailType: "INSTRUCTION_LABEL", hasAttachments: true, }), ).toEqual({ status: "PARSED", lastError: null }); }); it("INSTRUCTION_HOLD_SPLIT without table → PARSED / null", () => { expect( resolveNoSpreadsheetOutcome({ mailType: "INSTRUCTION_HOLD_SPLIT", hasAttachments: true, }), ).toEqual({ status: "PARSED", lastError: null }); }); it("NEW_CONTAINER + unsupported att → PARSE_FAILED / NO_SUPPORTED_SPREADSHEET", () => { expect( resolveNoSpreadsheetOutcome({ mailType: "NEW_CONTAINER", hasAttachments: true, }), ).toEqual({ status: "PARSE_FAILED", lastError: "NO_SUPPORTED_SPREADSHEET", }); }); it("NEW_CONTAINER + no att → REJECTED_VALIDATION / NO_SHIPMENT_ROWS", () => { expect( resolveNoSpreadsheetOutcome({ mailType: "NEW_CONTAINER", hasAttachments: false, }), ).toEqual({ status: "REJECTED_VALIDATION", lastError: "NO_SHIPMENT_ROWS", }); }); it("TRANSFER + no att → PARSED / null", () => { expect( resolveNoSpreadsheetOutcome({ mailType: "TRANSFER", hasAttachments: false, }), ).toEqual({ status: "PARSED", lastError: null }); }); it("WORK_ORDER + no att → PARSED / null", () => { expect( resolveNoSpreadsheetOutcome({ mailType: "WORK_ORDER", hasAttachments: false, }), ).toEqual({ status: "PARSED", lastError: null }); }); it("DO_UPLOAD + DO pdf → PARSED / null", () => { expect( resolveNoSpreadsheetOutcome({ mailType: "DO_UPLOAD", hasAttachments: true, }), ).toEqual({ status: "PARSED", lastError: null }); }); });