Files
suaveplan/packages/foundation/data/pagination/tests/dep-graph.test.ts
2026-05-27 23:47:53 +01:00

49 lines
1.7 KiB
TypeScript

/**
* Verify that the runtime dependencies declared in package.json match those
* actually imported in the source tree — no undeclared deps, no phantom deps.
*/
import { readFileSync } from "node:fs";
import { join } from "node:path";
import { describe, expect, it } from "@suaveplan/testing/runner";
const PKG_ROOT = join(import.meta.dirname, "..");
const pkg = JSON.parse(
readFileSync(join(PKG_ROOT, "package.json"), "utf-8")
) as {
dependencies: Record<string, string>;
devDependencies: Record<string, string>;
};
describe("dep-graph", () => {
it("has @suaveplan/error as a runtime dep", { timeout: 5000 }, () => {
expect(pkg.dependencies["@suaveplan/error"]).toBeDefined();
});
it("has @suaveplan/types as a runtime dep", { timeout: 5000 }, () => {
expect(pkg.dependencies["@suaveplan/types"]).toBeDefined();
});
it("has zod as a runtime dep", { timeout: 5000 }, () => {
expect(pkg.dependencies["zod"]).toBeDefined();
});
it("has tslib as a runtime dep", { timeout: 5000 }, () => {
expect(pkg.dependencies["tslib"]).toBeDefined();
});
it("has vitest as a devDep only", { timeout: 5000 }, () => {
expect(pkg.devDependencies["vitest"]).toBeDefined();
expect(pkg.dependencies["vitest"]).toBeUndefined();
});
it("has fast-check as a devDep only", { timeout: 5000 }, () => {
expect(pkg.devDependencies["fast-check"]).toBeDefined();
expect(pkg.dependencies["fast-check"]).toBeUndefined();
});
it("has mitata as a devDep only", { timeout: 5000 }, () => {
expect(pkg.devDependencies["mitata"]).toBeDefined();
expect(pkg.dependencies["mitata"]).toBeUndefined();
});
});