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.1 KiB
81 lines
2.1 KiB
import { describe, expect, it } from "vitest";
|
|
import {
|
|
applyMarkupToFlockCarrierOptions,
|
|
applyMarkupToFlockFlexibilityOptions,
|
|
applyMarkupToFlockLines,
|
|
applyMarkupToFlockRateUsd,
|
|
buildFlockStoredQuotes,
|
|
parseFlockStoredQuotes,
|
|
} from "@/modules/flock/quote-storage";
|
|
import type { FlockQuoteLine } from "@/workers/rpa/flock/types";
|
|
|
|
const lines: FlockQuoteLine[] = [
|
|
{
|
|
tier: "flock_direct",
|
|
serviceLevel: "guaranteed",
|
|
rateOption: "fastest",
|
|
carrier: "Flock Freight",
|
|
label: "FlockDirect®",
|
|
totalUsd: 1000,
|
|
transitDays: "4",
|
|
transitDescription: "4 days",
|
|
},
|
|
{
|
|
tier: "standard",
|
|
serviceLevel: "standard",
|
|
rateOption: "lowest",
|
|
carrier: "Flock Freight",
|
|
label: "Standard",
|
|
totalUsd: 500,
|
|
transitDays: "3-4",
|
|
transitDescription: "3-4 days",
|
|
},
|
|
];
|
|
|
|
describe("flock quote storage", () => {
|
|
it("按百分比加价", () => {
|
|
const marked = applyMarkupToFlockLines(lines, {
|
|
type: "percent",
|
|
percent: 10,
|
|
fixedAmount: 0,
|
|
});
|
|
expect(marked[0]!.final_total_usd).toBe(1100);
|
|
expect(marked[1]!.final_total_usd).toBe(550);
|
|
});
|
|
|
|
it("档内承运商/灵活价叠加固定加价", () => {
|
|
const rule = { type: "fixed" as const, percent: 0, fixedAmount: 3 };
|
|
expect(applyMarkupToFlockRateUsd(5255.63, rule)).toBe(5258.63);
|
|
expect(
|
|
applyMarkupToFlockCarrierOptions(
|
|
[
|
|
{
|
|
carrierName: "Echo FTL",
|
|
transitDays: "3",
|
|
rateUsd: 5255.63,
|
|
label: "Echo FTL",
|
|
},
|
|
],
|
|
rule,
|
|
)[0]!.rateUsd,
|
|
).toBe(5258.63);
|
|
expect(
|
|
applyMarkupToFlockFlexibilityOptions(
|
|
[{ key: "2_day", label: "2-day", rateUsd: 1000 }],
|
|
rule,
|
|
)[0]!.rateUsd,
|
|
).toBe(1003);
|
|
});
|
|
|
|
it("序列化与解析", () => {
|
|
const stored = buildFlockStoredQuotes(
|
|
lines,
|
|
{ type: "percent", percent: 0, fixedAmount: 0 },
|
|
"FRG-TEST",
|
|
);
|
|
expect(stored.provider).toBe("flock");
|
|
expect(parseFlockStoredQuotes(stored)?.reference).toBe("FRG-TEST");
|
|
expect(parseFlockStoredQuotes({ provider: "priority1", lines: [] })).toBeNull();
|
|
});
|
|
});
|