35 lines
1.6 KiB
JavaScript
35 lines
1.6 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { describe, it } from "vitest";
|
|
|
|
import { getDeclaredBoundaryDependencies, isForbiddenBoundarySpecifier, isForbiddenRelativeBoundarySpecifier } from "./verify-phase-c-boundaries.mjs";
|
|
|
|
describe("verify-phase-c-boundaries", () => {
|
|
it("matches exact forbidden packages and their subpaths only", () => {
|
|
assert.equal(isForbiddenBoundarySpecifier("@hivegrid/db", "@hivegrid/db"), true);
|
|
assert.equal(isForbiddenBoundarySpecifier("@hivegrid/db/client.server", "@hivegrid/db"), true);
|
|
assert.equal(isForbiddenBoundarySpecifier("@hivegrid/database", "@hivegrid/db"), false);
|
|
assert.equal(isForbiddenBoundarySpecifier("react-dom", "react"), false);
|
|
});
|
|
|
|
it("matches relative imports that resolve into forbidden package roots", () => {
|
|
const rootDir = "/repo";
|
|
|
|
assert.equal(isForbiddenRelativeBoundarySpecifier("packages/ui-app/src/index.ts", "../../db/src/client.server", "@hivegrid/db", rootDir), true);
|
|
assert.equal(isForbiddenRelativeBoundarySpecifier("packages/ui-app/src/index.ts", "../view-models/src/index", "@hivegrid/db", rootDir), false);
|
|
assert.equal(isForbiddenRelativeBoundarySpecifier("packages/foundation/src/index.ts", "@hivegrid/db", "@hivegrid/db", rootDir), false);
|
|
});
|
|
|
|
it("includes devDependencies in package boundary dependency checks", () => {
|
|
assert.deepEqual(
|
|
getDeclaredBoundaryDependencies({
|
|
dependencies: { "@hivegrid/view-models": "workspace:*" },
|
|
devDependencies: { "@hivegrid/db": "workspace:*" },
|
|
}),
|
|
{
|
|
"@hivegrid/view-models": "workspace:*",
|
|
"@hivegrid/db": "workspace:*",
|
|
}
|
|
);
|
|
});
|
|
});
|