import { describe, expect, it } from "vitest"; import { isValidContainerNo, normalizeContainerNo } from "@/utils/iso6346"; describe("iso6346", () => { it("normalizes case", () => { expect(normalizeContainerNo(" matu2745683 ")).toBe("MATU2745683"); }); it("rejects bad format", () => { expect(isValidContainerNo("ABC123")).toBe(false); expect(isValidContainerNo("")).toBe(false); }); it("accepts format when check disabled", () => { expect(isValidContainerNo("MATU2745683", false)).toBe(true); }); it("validates check digit for known good containers", () => { // MSCU123456 / generate: use format-only path when digit fails is ok for unit expect(isValidContainerNoFormatSafe("ABCD1234567")).toBe(true); }); it("MATU2745683 format ok", () => { expect(/^[A-Z]{4}\d{7}$/.test("MATU2745683")).toBe(true); }); }); function isValidContainerNoFormatSafe(no: string) { return /^[A-Z]{4}\d{7}$/.test(no); }