test.govlab/context/core/validators/repair.validator.test.ts
test.govlab/context/core/validators/repair.validator.test.ts is a file in Codebase Testing. 79 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import { repairDefectsOf, repairKindLookup } from "@govlab/context/core/validators/repair.validator.ts";
import type { Principle } from "@govlab/context/types/architecture.types.ts";
import { createGovlabContext } from "@govlab/context";
const KINDS = new Map([
["lexicon:extract-interface", "technique"],
["lexicon:fat-interface", "anti-pattern"],
["lexicon:cost", "metric"],
]);
const principle = function principle(fields: Partial<Principle>): Principle {
return {
category: "c",
conflicts_with: [],
definition: "A design rule.",
detected_by: [],
enables: [],
enforced_by: [],
id: "isp",
measured_by: [],
name: "ISP",
refactored_by: [],
reinforces: [],
requires: [],
scope: [],
severity: "recommended",
tensions_with: [],
type: "principle",
...fields,
};
};
const reasonsOf = function reasonsOf(principles: readonly Principle[]): readonly string[] {
return repairDefectsOf(principles, (ref) => KINDS.get(ref) ?? null).map(
(defect) => `${defect.field} ${defect.target}: ${defect.reason}`,
);
};
describe("repairDefectsOf", () => {
it("accepts a principle repaired by a technique and violated by an anti-pattern, and an anti-pattern that says how it forms", () => {
expect(
reasonsOf([
principle({ refactored_by: ["lexicon:extract-interface"], violated_by: ["lexicon:fat-interface"] }),
principle({ formed_by: "Bundling unrelated operations.", id: "fat", type: "anti-pattern" }),
]),
).toStrictEqual([]);
});
it("refuses a ref that names no record and one whose kind the field does not admit", () => {
expect(
reasonsOf([
principle({
refactored_by: ["lexicon:cost", "lexicon:ghost"],
violated_by: ["lexicon:extract-interface"],
}),
]),
).toStrictEqual([
"refactored_by lexicon:cost: names a metric, where the field admits technique, pattern, mechanism, activity, approach, style, model, artifact",
"refactored_by lexicon:ghost: names no record",
"violated_by lexicon:extract-interface: names a technique, where the field admits anti-pattern",
]);
});
it("refuses a principle with no violation, formed_by outside an anti-pattern, and an anti-pattern without it", () => {
expect(
reasonsOf([principle({ formed_by: "A sentence." }), principle({ id: "fat", type: "anti-pattern" })]),
).toStrictEqual([
"formed_by : carries formed_by, which only an anti-pattern holds",
"violated_by : names no anti-pattern that violates it",
"formed_by : is an anti-pattern with no formed_by sentence on how it forms",
]);
});
});
describe("repairKindLookup", () => {
it("reads a principle's type and a term's kind, and answers null for any other collection", () => {
const context = createGovlabContext();
const kindOf = repairKindLookup(context);
const [first] = context.arch.all();
const [term] = context.lex.all();
expect(kindOf(`architecture:${first?.id ?? ""}`)).toBe(first?.type);
expect(kindOf(`lexicon:${term?.id ?? ""}`)).toBe(term?.kind);
expect(kindOf("algorithms:x")).toBeNull();
});
});