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.

54 lines
1.4 KiB

import { describe, expect, it } from "vitest";
import {
applyMarkupToFlockLines,
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 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();
});
});