test.build/core/converters/reference.converter.test.ts

test.build/core/converters/reference.converter.test.ts is a file in Codebase Testing. 98 lines of code and 0 definitions.

import { describe, expect, it } from "vitest";
import { REFACTORED_BY_RELATION, REFERENCED_BY_RELATION, VIOLATED_BY_RELATION } from "@govlab/constants";
import { createGovlabContext } from "@govlab/context";
import { referencesOf } from "@banes-lab/build-scripts/core/converters/reference.converter.ts";
import { snapshotOf } from "@banes-lab/build-scripts/core/converters/ontology.converter.ts";
import { EXPRESSED_BY_RELATION } from "@banes-lab/web/configuration/constants/graph.constants.ts";

const context = createGovlabContext();
const snapshot = snapshotOf(context);
const faces = referencesOf(snapshot);

describe("referencesOf", () => {
    it("indexes one record per principle, term, contract, layer and tension under its collection", () => {
        expect(Object.keys(faces.get("architecture") ?? {})).toHaveLength(context.arch.ids().length);
        expect(Object.keys(faces.get("lexicon") ?? {})).toHaveLength(context.lex.ids().length);
        expect(Object.keys(faces.get("algorithms") ?? {})).toHaveLength(context.algo.ids().length);
        expect(Object.keys(faces.get("layer") ?? {})).toHaveLength(snapshot.layers.nodes.length);
        expect(Object.keys(faces.get("tension") ?? {})).toHaveLength(snapshot.layers.resolutions.length);
    });

    it("carries a principle's short code, layer, relations and the alternate term's definition as its summary", () => {
        const srp = faces.get("architecture")?.["architecture:single-responsibility"];
        expect(srp?.code).toBe("SRP");
        expect(srp?.name).toBe("Single Responsibility Principle");
        expect(srp?.layer?.ref).toBe("layer:structural-core");
        expect(
            srp?.relations.some(
                (relation) => relation.relation === REFERENCED_BY_RELATION && relation.edges.length > 0,
            ),
        ).toBe(true);
        expect(srp?.relations.every((relation) => relation.edges.length > 0)).toBe(true);
        expect(srp?.summary?.length ?? 0).toBeGreaterThan(0);
        expect(
            Object.values(faces.get("architecture") ?? {}).every((principle) => (principle.summary?.length ?? 0) > 0),
        ).toBe(true);
    });

    it("carries every principle's violated-by, refactored-by and expressed-by targets as relations", () => {
        const ssot = faces.get("architecture")?.["architecture:single-source-of-truth"];
        const refsOf = (name: string): readonly (string | null)[] =>
            ssot?.relations.find((held) => held.relation === name)?.edges.map((edge) => edge.ref) ?? [];
        expect(refsOf(VIOLATED_BY_RELATION)).toContain("lexicon:duplicated-authority");
        expect(refsOf(REFACTORED_BY_RELATION)).toContain("lexicon:centralize-the-rule");
        const index = faces.get("architecture") ?? {};
        const principles = snapshot.principles.flatMap((group) => group.principles);
        expect(principles.length).toBeGreaterThan(0);
        const missing = principles.flatMap((principle) => {
            const ref = `architecture:${principle.id}`;
            const record = index[ref];
            const named = (relation: string): number =>
                record?.relations.find((held) => held.relation === relation)?.edges.length ?? 0;
            return [
                ...(named(VIOLATED_BY_RELATION) === principle.violatedBy.length ? [] : [`${ref} violated-by`]),
                ...(named(REFACTORED_BY_RELATION) === principle.refactoredBy.length ? [] : [`${ref} refactored-by`]),
                ...(named(EXPRESSED_BY_RELATION) === principle.expressedBy.length ? [] : [`${ref} expressed-by`]),
            ];
        });
        expect(missing).toStrictEqual([]);
    });

    it("types every contract as an algorithm and names its domain by title", () => {
        const contracts = Object.values(faces.get("algorithms") ?? {});
        expect(contracts.every((contract) => contract.kind === "algorithm")).toBe(true);
        const domains = contracts.map(
            (contract) => contract.relations.find((relation) => relation.relation === "domain")?.edges[0],
        );
        expect(domains.every((domain) => domain?.ref?.startsWith("algorithms-domain:") === true)).toBe(true);
        expect(domains.some((domain) => domain?.label === "CSS cascade")).toBe(true);
    });

    it("labels a principle's tension by its pair", () => {
        const tensions = Object.values(faces.get("architecture") ?? {}).flatMap(
            (principle) => principle.relations.find((relation) => relation.relation === "tensions")?.edges ?? [],
        );
        expect(tensions.length).toBeGreaterThan(0);
        expect(tensions.every((edge) => edge.label.includes(" / "))).toBe(true);
    });

    it("indexes every reasoning record, every loop stage, every category, domain, force, kind and relation range", () => {
        const reasonIndex = faces.get("reasoning") ?? {};
        expect(Object.keys(reasonIndex).length).toBeGreaterThan(
            snapshot.reason.nodes.length + snapshot.reason.axes.length,
        );
        const [firstNode] = snapshot.reason.nodes;
        const node = reasonIndex[`reasoning:${firstNode?.anchor ?? ""}`];
        expect(node?.kind).toBe("node");
        expect(node?.relations.some((relation) => relation.relation === "axis")).toBe(true);
        expect(Object.keys(faces.get("stage") ?? {})).toHaveLength(snapshot.reason.derivationLoop.stages.length);
        expect(faces.get("stage")?.["stage:orient"]?.relations.some((relation) => relation.relation === "axis")).toBe(
            true,
        );
        expect(Object.keys(faces.get("architecture-category") ?? {})).toHaveLength(snapshot.principles.length);
        expect(Object.keys(faces.get("lexicon-category") ?? {})).toHaveLength(snapshot.terms.length);
        expect(Object.keys(faces.get("algorithms-domain") ?? {})).toHaveLength(snapshot.contracts.length);
        expect(Object.keys(faces.get("force") ?? {})).toHaveLength(snapshot.forces.length);
        expect(Object.keys(faces.get("kind") ?? {})).toHaveLength(snapshot.kinds.length);
        expect(Object.keys(faces.get("relation") ?? {})).toHaveLength(snapshot.ranges.length);
    });

    it("carries a term's definition and a contract's intent as the summary", () => {
        const [term] = Object.values(faces.get("lexicon") ?? {});
        expect(term?.summary?.length ?? 0).toBeGreaterThan(0);
        const [contract] = Object.values(faces.get("algorithms") ?? {});
        expect(contract?.summary?.length ?? 0).toBeGreaterThan(0);
    });
});