|
|
import { describe, expect, it } from "vitest";
|
|
|
import {
|
|
|
isKnownUsDestinationPort,
|
|
|
matchUsDestinationPort,
|
|
|
} from "@/services/parse/us-ports";
|
|
|
import {
|
|
|
isPlausibleDestinationPort,
|
|
|
normalizeDestinationPort,
|
|
|
parseBlPlusTemplate,
|
|
|
} from "@/services/parse/bl-plus-template";
|
|
|
|
|
|
describe("us destination ports whitelist", () => {
|
|
|
it("accepts known US ports and normalizes aliases", () => {
|
|
|
expect(matchUsDestinationPort("洛杉矶")).toBe("洛杉矶");
|
|
|
expect(matchUsDestinationPort("Los Angeles")).toBe("洛杉矶");
|
|
|
expect(matchUsDestinationPort("LA")).toBe("洛杉矶");
|
|
|
expect(matchUsDestinationPort("Long Beach")).toBe("长滩");
|
|
|
expect(matchUsDestinationPort("纽约")).toBe("纽约");
|
|
|
expect(matchUsDestinationPort("Savannah")).toBe("萨凡纳");
|
|
|
});
|
|
|
|
|
|
it("rejects non-port fragments", () => {
|
|
|
expect(matchUsDestinationPort("UPS-6件")).toBeNull();
|
|
|
expect(matchUsDestinationPort("ETA : 7/7 | Fw: 回复")).toBeNull();
|
|
|
expect(matchUsDestinationPort("拆柜清单")).toBeNull();
|
|
|
expect(matchUsDestinationPort("贴标操作")).toBeNull();
|
|
|
expect(matchUsDestinationPort("提拆派")).toBeNull();
|
|
|
expect(isKnownUsDestinationPort("随便中文")).toBe(false);
|
|
|
expect(isPlausibleDestinationPort("随便中文")).toBe(false);
|
|
|
expect(normalizeDestinationPort("UPS-6件")).toBe("");
|
|
|
});
|
|
|
|
|
|
it("keeps 洛杉矶 from bl-plus template and ignores channel as port", () => {
|
|
|
const ok = parseBlPlusTemplate(
|
|
|
"新辰泽+WHLC027G597465+WHSU8127240+洛杉矶+40HQ+EDT2026.04-25 ETA2026.05-15船名航次HMM EMERALD 013E+提拆派组合柜-不带托架",
|
|
|
{ defaultYear: 2026 },
|
|
|
);
|
|
|
expect(ok?.port).toBe("洛杉矶");
|
|
|
|
|
|
const bad = parseBlPlusTemplate(
|
|
|
"LINK EVER INC+ZIMUSHH32195411+柜号:ZCSU6581068+ETA : 7/7+UPS-6件+拆柜清单",
|
|
|
{ defaultYear: 2026 },
|
|
|
);
|
|
|
// 即使误解析,目的港也不得是渠道件数
|
|
|
expect(bad?.port == null || bad?.port === "洛杉矶").toBe(true);
|
|
|
expect(bad?.port).not.toBe("UPS-6件");
|
|
|
});
|
|
|
});
|