test.govlab/patterns/core/analyzers/concern.analyzer.test.ts
test.govlab/patterns/core/analyzers/concern.analyzer.test.ts is a file in Codebase Testing. 27 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import { crossConcernFindings } from "@govlab/patterns/core/analyzers/concern.analyzer.ts";
import { definition } from "./code.fixture.ts";
const edgesInto = function edgesInto(
from: string,
concerns: readonly string[],
): { file: string; from: string; line: number; to: string }[] {
return concerns.map((concern) => ({ file: "core/a.ts", from, line: 1, to: `src/${concern}/x.ts::fn` }));
};
describe("crossConcernFindings", () => {
it("flags a definition that calls into four or more concerns", () => {
const found = crossConcernFindings(
[definition("run", "core/a.ts")],
edgesInto("core/a.ts::run", ["alpha", "beta", "gamma", "delta"]),
);
expect(found.map((finding) => finding.members)).toStrictEqual([["alpha", "beta", "delta", "gamma"]]);
});
it("spares a factory and a definition with a narrow reach", () => {
const wide = ["alpha", "beta", "gamma", "delta"];
expect(
crossConcernFindings([definition("createAll", "core/a.ts")], edgesInto("core/a.ts::createAll", wide)),
).toStrictEqual([]);
expect(
crossConcernFindings([definition("run", "core/a.ts")], edgesInto("core/a.ts::run", ["alpha"])),
).toStrictEqual([]);
});
});