You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mail-yubao/tests/unit/no-spreadsheet-outcome.test.ts

74 lines
2.0 KiB

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 });
});
});