Round-trip tests against Firecrawl, Runable, RevisionDojo, and OnePREP plan data proving diffPlanV1 + applyDiff reconstructs variants correctly. Co-authored-by: Cursor <cursoragent@cursor.com>
42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import { type ApiPlanV1 } from "@autumn/shared";
|
|
import { describe, expect, test } from "bun:test";
|
|
import { diffPlanV1 } from "@autumn/shared/utils/planV1Utils/diff/diffPlanV1.js";
|
|
import { applyDiff } from "@autumn/shared/utils/planV1Utils/diff/applyDiff.js";
|
|
import {
|
|
creditPackBase,
|
|
creditPackVariants,
|
|
plusBase,
|
|
plusVariants,
|
|
proBase,
|
|
proVariants,
|
|
unlimitedBase,
|
|
unlimitedVariants,
|
|
freeStarterBase,
|
|
freeStarterVariants,
|
|
maxBase,
|
|
maxVariants,
|
|
} from "./diffPlanV1.runable.fixtures.js";
|
|
import { normalizePlan } from "./utils/normalizePlan.js";
|
|
|
|
// --- test matrix ---
|
|
const groups = [
|
|
{ name: "credit_pack", base: creditPackBase, variants: creditPackVariants },
|
|
{ name: "plus", base: plusBase, variants: plusVariants },
|
|
{ name: "pro", base: proBase, variants: proVariants },
|
|
{ name: "unlimited", base: unlimitedBase, variants: unlimitedVariants },
|
|
{ name: "free_starter", base: freeStarterBase, variants: freeStarterVariants },
|
|
{ name: "max", base: maxBase, variants: maxVariants },
|
|
];
|
|
|
|
for (const { name, base, variants } of groups) {
|
|
describe(`runable ${name} group — diff/apply round-trip`, () => {
|
|
for (const variant of variants) {
|
|
test(`${variant.id} reconstructs from ${base.id} + diff`, () => {
|
|
const diff = diffPlanV1({ from: base, to: variant });
|
|
const reconstructed = applyDiff({ base, diff });
|
|
expect(normalizePlan(reconstructed)).toEqual(normalizePlan(variant));
|
|
});
|
|
}
|
|
});
|
|
}
|