|
|
import { describe, expect, it } from "vitest";
|
|
|
import { mapChannel } from "@/services/parse/channel-map";
|
|
|
|
|
|
describe("channel-map", () => {
|
|
|
it("maps 卡派 to TRUCK", () => {
|
|
|
expect(mapChannel("卡派")).toEqual({ transporter: "TRUCK", unmapped: false });
|
|
|
});
|
|
|
it("maps UPS/FEDEX/DHL/USPS", () => {
|
|
|
expect(mapChannel("UPS Ground").transporter).toBe("UPS");
|
|
|
expect(mapChannel("FedEx").transporter).toBe("FEDEX");
|
|
|
expect(mapChannel("TNT Express").transporter).toBe("FEDEX");
|
|
|
expect(mapChannel("DHL").transporter).toBe("DHL");
|
|
|
expect(mapChannel("USPS").transporter).toBe("USPS");
|
|
|
expect(mapChannel("SF Express").transporter).toBe("SF");
|
|
|
expect(mapChannel("4PX").transporter).toBe("4PX");
|
|
|
expect(mapChannel("YunExpress").transporter).toBe("YUNEXPRESS");
|
|
|
});
|
|
|
it("maps 自提/留仓/扣货", () => {
|
|
|
expect(mapChannel("自提").transporter).toBe("自提");
|
|
|
expect(mapChannel("留仓").transporter).toBe("留仓");
|
|
|
expect(mapChannel("拦截扣货").transporter).toBe("扣货");
|
|
|
});
|
|
|
it("marks unmapped and truncates 30", () => {
|
|
|
const raw = "未知渠道ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
|
const r = mapChannel(raw);
|
|
|
expect(r.unmapped).toBe(true);
|
|
|
expect(r.transporter.length).toBeLessThanOrEqual(30);
|
|
|
});
|
|
|
it("ignores Truck inside instruction note", () => {
|
|
|
const note =
|
|
|
"注意:1.ups和fedex的件... 如UPS/FEDEX/USPS/Truck 或 卡派";
|
|
|
expect(mapChannel(note).transporter).toBe("");
|
|
|
});
|
|
|
});
|