Initial Commit
This commit is contained in:
45
packages/api-stack/api/api-lifecycle/tests/dep-graph.test.ts
Normal file
45
packages/api-stack/api/api-lifecycle/tests/dep-graph.test.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
import { resolve } from "node:path";
|
||||
import { describe, expect, it } from "@suaveplan/testing/runner";
|
||||
|
||||
const PKG_JSON = JSON.parse(
|
||||
readFileSync(resolve(__dirname, "..", "package.json"), "utf8")
|
||||
) as {
|
||||
dependencies?: Record<string, string>;
|
||||
devDependencies?: Record<string, string>;
|
||||
};
|
||||
|
||||
describe("dep-graph", () => {
|
||||
it("declares the four required runtime suaveplan deps", {
|
||||
timeout: 5000,
|
||||
}, () => {
|
||||
const deps = PKG_JSON.dependencies ?? {};
|
||||
expect(deps["@suaveplan/api-types"]).toBeDefined();
|
||||
expect(deps["@suaveplan/error"]).toBeDefined();
|
||||
expect(deps["@suaveplan/events"]).toBeDefined();
|
||||
expect(deps["@suaveplan/fsm"]).toBeDefined();
|
||||
expect(deps["@suaveplan/retry"]).toBeDefined();
|
||||
});
|
||||
|
||||
it("uses workspace ranges for internal deps", { timeout: 5000 }, () => {
|
||||
const deps = PKG_JSON.dependencies ?? {};
|
||||
for (const [name, range] of Object.entries(deps)) {
|
||||
if (name.startsWith("@suaveplan/")) {
|
||||
expect(range, `${name} should use workspace range`).toMatch(
|
||||
/^workspace:/
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it("root barrel has no export-star", { timeout: 5000 }, () => {
|
||||
const indexSrc = readFileSync(
|
||||
resolve(__dirname, "..", "src", "index.ts"),
|
||||
"utf8"
|
||||
);
|
||||
// Forbid `export *` per CLAUDE.md rule 10. Namespace re-exports
|
||||
// (`export * as X`) are not used here.
|
||||
expect(/export\s+\*\s+from/.test(indexSrc)).toBe(false);
|
||||
expect(/export\s+\*\s+as/.test(indexSrc)).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user