import { beforeEach, describe, expect, it, vi } from "vitest"; import { mapShipmentRows, normalizeFbaCodeForCc, saveContainer, } from "@/services/cc/save-container"; import { fillShipmentFbaCodes } from "@/services/parse/normalize-fba-code"; import { resetMockCcState, setMockConflictContainers, } from "@/services/cc/mock-state"; import { checkContainerConflict } from "@/services/cc/conflict"; vi.mock("@/services/cc/settings-config", async (importOriginal) => { const actual = await importOriginal(); return { ...actual, isCcMock: async () => true, }; }); describe("cc mock", () => { beforeEach(() => { process.env.CC_MOCK = "true"; process.env.DATABASE_URL = process.env.DATABASE_URL || "mysql://app:app@localhost:3306/email_forecast"; resetMockCcState(); }); it("SaveContainer returns ok with external id", async () => { const res = await saveContainer({ entity: { F_TransMode: 0, F_OperationType: 0, F_ContainerNo: "MATU2745683", F_Classis: 0, }, shipments: [ { row_index: 1, row_status: "VALID", F_FBACode: "ABQ2", F_Transporter: "TRUCK", F_CTNS: 1, }, { row_index: 2, row_status: "VALID", F_FBACode: "FTW1", F_Transporter: "TRUCK", F_CTNS: 4, }, ], }); expect(res.ok).toBe(true); if (res.ok) expect(res.externalId).toBeTruthy(); }); it("uses courier name as FBACode when UPS/FEDEX/DHL/USPS have no warehouse", () => { expect(normalizeFbaCodeForCc("", "UPS")).toBe("UPS"); expect(normalizeFbaCodeForCc("", "FEDEX")).toBe("FEDEX"); expect(normalizeFbaCodeForCc("", "DHL")).toBe("DHL"); expect(normalizeFbaCodeForCc("", "USPS")).toBe("USPS"); expect(normalizeFbaCodeForCc("ups", "UPS")).toBe("UPS"); expect(normalizeFbaCodeForCc("", "TRUCK")).toBe(""); expect(normalizeFbaCodeForCc("", "็•™ไป“")).toBe("HOLD"); expect(normalizeFbaCodeForCc("LAS1", "UPS")).toBe("LAS1"); const rows = mapShipmentRows([ { row_index: 60, row_status: "VALID", F_FBACode: "", F_Transporter: "UPS", F_CTNS: 2, }, ]); expect(rows[0].F_FBACode).toBe("UPS"); expect(rows[0].F_Transporter).toBe("UPS"); const displayed = fillShipmentFbaCodes([ { row_index: 60, F_FBACode: "", F_Transporter: "UPS" }, { row_index: 61, F_FBACode: "", F_Transporter: "FEDEX" }, { row_index: 62, F_FBACode: "LAS1", F_Transporter: "TRUCK" }, ]) as Array<{ F_FBACode: string }>; expect(displayed.map((r) => r.F_FBACode)).toEqual(["UPS", "FEDEX", "LAS1"]); }); it("conflict when container in mock list", async () => { setMockConflictContainers(["MATU2745683"]); const r = await checkContainerConflict({ containerNo: "MATU2745683", mailId: 1n, }); expect(r.ok).toBe(false); if (!r.ok) expect(r.code).toBe("CONFLICT_CONTAINER"); }); });