test.govlab/context/core/validators/architecture.validator.test.ts
test.govlab/context/core/validators/architecture.validator.test.ts is a file in Codebase Testing. 72 lines of code and 0 definitions.
import { createArchRelations, createGovlabContext, createLexicon } from "@govlab/context";
import {
crossFaceCollisions,
invalidSeveritiesOf,
unreachableAntiPatternsOf,
unresolvedExpressionsOf,
} from "@govlab/context/core/validators/architecture.validator.ts";
import type { KeywordRecord } from "@govlab/context/types/grammar.types.ts";
import assert from "node:assert/strict";
import { plantedPrinciple } from "./ontology.fixture.ts";
import { test } from "vitest";
const KEYWORD: KeywordRecord = {
keyword: "INVARIANT",
roles: [{ category: "invariant", example: "INVARIANT x", meaning: "a stated invariant" }],
};
const PRODUCTION = { group: "planning", lhs: "refusal_line", rhs: '"refuse:" <condition>' };
const expressionFaces = (expressedBy: readonly string[]): Parameters<typeof unresolvedExpressionsOf>[0] => ({
algo: { get: () => null },
arch: { all: () => [{ expressedBy, id: "planted-principle" }], get: () => null },
pag: {
documentType: () => null,
keyword: (id: string) => (id === "INVARIANT" ? KEYWORD : null),
production: (lhs: string) => (lhs === PRODUCTION.lhs ? PRODUCTION : null),
template: () => null,
},
});
test("unresolvedExpressionsOf reports a pag ref that names no construct, and a ref outside pag", () => {
const findings = unresolvedExpressionsOf(
expressionFaces(["pag:production:no_such_line", "pag:keyword:GHOST", "architecture:stated-invariant"]),
);
assert.deepEqual(findings, [
{ from: "planted-principle", target: "pag:production:no_such_line" },
{ from: "planted-principle", target: "pag:keyword:GHOST" },
{ from: "planted-principle", target: "architecture:stated-invariant" },
]);
});
test("unresolvedExpressionsOf passes a keyword and a production the grammar declares", () => {
const faces = expressionFaces(["pag:keyword:INVARIANT", "pag:production:refusal_line"]);
assert.deepEqual(unresolvedExpressionsOf(faces), []);
});
test("an anti-pattern no principle conflicts with is unreachable", () => {
const arch = createArchRelations({
data: [
plantedPrinciple("lonely-defect", { type: "anti-pattern" }),
plantedPrinciple("guard", { conflicts_with: ["named-defect"] }),
plantedPrinciple("named-defect", { type: "anti-pattern" }),
],
});
assert.deepEqual(unreachableAntiPatternsOf(arch), ["lonely-defect"]);
});
test("a lexicon id that an architecture id also takes is a collision", () => {
const arch = createArchRelations({ data: [plantedPrinciple("shared-name")] });
const lex = createLexicon({
data: [
{
category: "planted",
records: [{ definition: "A planted term.", kind: "constraint", name: "Shared Name" }],
},
],
});
assert.deepEqual(crossFaceCollisions(arch, lex), ["shared-name"]);
});
test("mandatoryFor beside any severity but the conditional one is reported, and the bundled severities hold", () => {
const arch = createArchRelations({
data: [plantedPrinciple("gated-rule", { mandatoryFor: "production", severity: "mandatory" })],
});
assert.deepEqual(
invalidSeveritiesOf(arch).map((entry) => entry.id),
["gated-rule"],
);
assert.deepEqual(createGovlabContext().validateResolution().invalidSeverities, []);
});