import { readFileSync } from "node:fs"; import { join } from "node:path"; import { describe, expect, it } from "@suaveplan/testing/runner"; const pkgRoot = join(__dirname, ".."); const pkg = JSON.parse(readFileSync(join(pkgRoot, "package.json"), "utf8")) as { name: string; sideEffects: boolean; dependencies: Record; }; describe("dep-graph invariants", () => { it("declares sideEffects: false", { timeout: 5000 }, () => { expect(pkg.sideEffects).toBe(false); }); it("declares the expected runtime dependencies", { timeout: 5000 }, () => { expect(Object.keys(pkg.dependencies).sort()).toEqual([ "@suaveplan/currency", "@suaveplan/currency-providers", "@suaveplan/error", "@suaveplan/types", "tslib", ]); }); it("uses workspace:^ for every @suaveplan/* dep", { timeout: 5000 }, () => { for (const [name, range] of Object.entries(pkg.dependencies)) { if (name.startsWith("@suaveplan/")) { expect(range).toBe("workspace:^"); } } }); it("pins package name and version baseline", { timeout: 5000 }, () => { expect(pkg.name).toBe( "@suaveplan/currency-provider-open-exchange-rates" ); }); });