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.
31 lines
953 B
31 lines
953 B
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);
|
|
}
|