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.
81 lines
2.6 KiB
81 lines
2.6 KiB
import { describe, expect, it } from "vitest";
|
|
import { buildFlockQuotesApiRequest } from "@/lib/flock/quote-payload";
|
|
import { mapFlockFulfillmentOptionsToLines } from "@/lib/flock/map-fulfillment-options";
|
|
import type { FlockQuoteInput } from "@/workers/rpa/flock/types";
|
|
|
|
const sampleInput: FlockQuoteInput = {
|
|
pickupDate: "07/15/2026",
|
|
pickupZip: "90001",
|
|
deliveryZip: "75201",
|
|
palletCount: 6,
|
|
totalWeightLb: 10_000,
|
|
lengthIn: 48,
|
|
widthIn: 40,
|
|
heightIn: 48,
|
|
};
|
|
|
|
describe("buildFlockQuotesApiRequest", () => {
|
|
it("对齐抓包契约字段", () => {
|
|
const body = buildFlockQuotesApiRequest(sampleInput);
|
|
expect(body.shipment.pickupDate).toBe("2026-07-15");
|
|
expect(body.shipment.originPostalCode).toBe("90001");
|
|
expect(body.shipment.destinationPostalCode).toBe("75201");
|
|
expect(body.shipment.items[0]).toMatchObject({
|
|
quantity: 6,
|
|
weightLbs: 10000,
|
|
lengthIn: 48,
|
|
freightClass: "CLASS_60",
|
|
packagingType: "PALLET_OTHER",
|
|
});
|
|
expect(body.isEdiRequote).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("mapFlockFulfillmentOptionsToLines", () => {
|
|
it("映射 GUARANTEED_HUBLESS 与 STANDARD 最低价", () => {
|
|
const { quotes, reference } = mapFlockFulfillmentOptionsToLines({
|
|
referenceNumber: "FFW-TEST",
|
|
fulfillmentOptions: [
|
|
{
|
|
fulfillmentCategory: "STANDARD",
|
|
rateUsd: "1512.67",
|
|
transitTimeDaysMin: 3,
|
|
transitTimeDaysMax: 7,
|
|
carrierName: "A",
|
|
},
|
|
{
|
|
fulfillmentCategory: "STANDARD",
|
|
rateUsd: "1410.09",
|
|
transitTimeDaysMin: 3,
|
|
transitTimeDaysMax: 5,
|
|
carrierName: "Roadrunner",
|
|
},
|
|
{
|
|
fulfillmentCategory: "GUARANTEED_HUBLESS",
|
|
rateUsd: "2091.00",
|
|
transitTimeDaysMin: 4,
|
|
transitTimeDaysMax: 4,
|
|
transitSupportedOnWeekendsAndHolidays: true,
|
|
carrierName: "Flock Freight Estimate",
|
|
},
|
|
{
|
|
fulfillmentCategory: "GUARANTEED_HUBLESS",
|
|
rateUsd: "1970.00",
|
|
transitTimeDaysMin: 4,
|
|
transitTimeDaysMax: 4,
|
|
transitSupportedOnWeekendsAndHolidays: true,
|
|
carrierName: "Flock Freight Estimate",
|
|
},
|
|
],
|
|
});
|
|
expect(reference).toBe("FFW-TEST");
|
|
expect(quotes).toHaveLength(2);
|
|
const direct = quotes.find((q) => q.tier === "flock_direct");
|
|
const standard = quotes.find((q) => q.tier === "standard");
|
|
expect(direct?.totalUsd).toBe(1970);
|
|
expect(direct?.label).toBe("FlockDirect®");
|
|
expect(standard?.totalUsd).toBe(1410.09);
|
|
expect(standard?.transitDays).toBe("3-5");
|
|
});
|
|
});
|