This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { checkBoundaries } from "../scripts/check-boundaries.js";
|
||||
|
||||
const testDirectory = path.dirname(fileURLToPath(import.meta.url));
|
||||
const fixtures = path.join(testDirectory, "fixtures", "boundaries");
|
||||
|
||||
describe("repository dependency boundaries", () => {
|
||||
it("accepts public contracts below Core", async () => {
|
||||
const result = await checkBoundaries(path.join(fixtures, "legal"));
|
||||
expect(result.violations).toEqual([]);
|
||||
});
|
||||
|
||||
it.each([
|
||||
["core-imports-module", "core-is-feature-agnostic"],
|
||||
["module-imports-surface", "modules-use-public-platform-contracts"],
|
||||
["cross-module-import", "modules-do-not-import-other-modules"],
|
||||
["module-has-ui", "modules-do-not-own-ui"],
|
||||
["cycle", "no-circular-source-dependencies"],
|
||||
])("rejects %s", async (fixture, expectedRule) => {
|
||||
const result = await checkBoundaries(path.join(fixtures, fixture));
|
||||
expect(result.violations.map((violation) => violation.rule)).toContain(expectedRule);
|
||||
});
|
||||
|
||||
it("rejects both component and stylesheet files inside a module", async () => {
|
||||
const result = await checkBoundaries(path.join(fixtures, "module-has-ui"));
|
||||
expect(
|
||||
result.violations.filter((violation) => violation.rule === "modules-do-not-own-ui"),
|
||||
).toHaveLength(2);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user