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.
45 lines
1.4 KiB
45 lines
1.4 KiB
import { describe, expect, it } from "vitest";
|
|
import { DEFAULT_PRIORITY1_DEMO } from "@/workers/rpa/priority1/demo-input";
|
|
import { hashPriority1Input } from "@/modules/priority1/hash";
|
|
import { priority1LinesToQuoteItems } from "@/modules/priority1/quote-mapper";
|
|
import { validatePriority1QuoteInput } from "@/modules/priority1/validation";
|
|
|
|
describe("priority1 validation", () => {
|
|
it("校验合法 LTL 提交", () => {
|
|
const parsed = validatePriority1QuoteInput({
|
|
request_id: "req-1",
|
|
customer_id: "CUST_001",
|
|
priority1_input: DEFAULT_PRIORITY1_DEMO,
|
|
});
|
|
expect(parsed.originZip).toBe("10118");
|
|
expect(parsed.phone).toHaveLength(10);
|
|
});
|
|
|
|
it("相同输入生成相同哈希", () => {
|
|
const a = hashPriority1Input(DEFAULT_PRIORITY1_DEMO);
|
|
const b = hashPriority1Input({ ...DEFAULT_PRIORITY1_DEMO });
|
|
expect(a).toBe(b);
|
|
expect(a).toHaveLength(32);
|
|
});
|
|
|
|
it("承运商列表映射为报价项", () => {
|
|
const items = priority1LinesToQuoteItems([
|
|
{
|
|
rank: 1,
|
|
carrier: "XPO",
|
|
carrierCode: "XPO",
|
|
totalUsd: 400,
|
|
transitDays: 3,
|
|
deliveryDate: null,
|
|
expirationDate: null,
|
|
serviceLevel: "Standard",
|
|
quoteId: 1,
|
|
caboUrl: null,
|
|
source: "api-all",
|
|
},
|
|
]);
|
|
expect(items[0]?.carrier).toBe("XPO");
|
|
expect(items[0]?.rawTotal).toBe(400);
|
|
});
|
|
});
|