import { describe, expect, it } from "vitest"; import { normalizeQuote, resolveRatesFromBody, } from "@/workers/rpa/quote-capture/quote-normalize"; import { satisfiesQuoteContract } from "@/workers/rpa/quote-capture/quote-contract-guard"; const rates = { standard: { lowest: { price: 100, transitDays: "5d" }, fastest: { price: 120, transitDays: "3d" }, }, guaranteed: { lowest: { price: 200, transitDays: "5d" }, fastest: { price: 220, transitDays: "2d" }, }, }; describe("resolveRatesFromBody", () => { it("body.rates", () => { expect(resolveRatesFromBody({ rates })?.sourcePath).toBe("rates"); }); it("body.data.rates", () => { expect(resolveRatesFromBody({ data: { rates } })?.sourcePath).toBe( "data.rates", ); }); it("body.result.rates", () => { expect(resolveRatesFromBody({ result: { rates } })?.sourcePath).toBe( "result.rates", ); }); it("array[0].rates", () => { expect(resolveRatesFromBody([{ rates }])?.sourcePath).toBe("[0].rates"); }); }); describe("normalizeQuote + contract", () => { it("data.rates 通过契约", () => { expect(satisfiesQuoteContract({ data: { rates } })).toBe(true); }); it("无 rates 返回 null", () => { expect(normalizeQuote({ foo: 1 })).toBeNull(); }); });