test.govlab/context/configuration/strings/validation.report.strings.test.ts

test.govlab/context/configuration/strings/validation.report.strings.test.ts is a file in Codebase Testing. 77 lines of code and 0 definitions.

import {
    aliasLine,
    ambiguousLine,
    blockHeading,
    checkRefLine,
    collisionLine,
    deadSeedLine,
    declarationLine,
    distinctLine,
    edgeLabelLine,
    expressionLine,
    failedItem,
    fieldLine,
    groundLine,
    kindConflictLine,
    lensLine,
    lexDefectLine,
    listedItem,
    misspelledLine,
    moreItems,
    pairLine,
    reasonEdgeLine,
    reasonedLine,
    relationLine,
    repairLine,
    shapeInstanceLine,
    tensionLine,
    uncheckedLine,
    ungroundedGateLine,
    unknownKeyLine,
    unreachableLine,
} from "@govlab/context/configuration/strings/validation.report.strings.ts";
import assert from "node:assert/strict";
import { test } from "vitest";

test("the item marks tell a failed item from a listed one, and a heading opens on its own line", () => {
    assert.equal(failedItem("x"), "  ✖ x");
    assert.equal(listedItem("x"), "  · x");
    assert.equal(blockHeading("h"), "\n  h");
    assert.ok(moreItems(3).includes("3 more"));
});

test("every worklist line names the record and the value it reports", () => {
    const lines: [string, string][] = [
        [lexDefectLine("t", "a reason"), "t"],
        [collisionLine("shared"), "shared"],
        [kindConflictLine("r", "principle", "a defect in which", "anti-pattern"), "anti-pattern"],
        [unreachableLine("lonely"), "lonely"],
        [reasonedLine("r", "a reason"), "a reason"],
        [tensionLine("a", "b", "a reason"), '"b"'],
        [misspelledLine("r", "object creation", "object_creation"), "object_creation"],
        [deadSeedLine("a", "b", "a reason"), '"a"'],
        [ungroundedGateLine("foo-gate"), "foo-gate"],
        [fieldLine("architecture", "r", "definition"), "definition"],
        [expressionLine("r", "pag:x"), '"pag:x"'],
        [pairLine("principle", "a", "b", "requires"), "(requires)"],
        [distinctLine("a", "b", "a reason"), '"b"'],
        [aliasLine("architecture:a", "AB", "a reason"), 'architecture:a alias "AB"'],
        [repairLine("architecture:a", "violated_by", "lexicon:b", "a reason"), 'violated_by "lexicon:b"'],
        [repairLine("architecture:a", "formed_by", "", "a reason"), "architecture:a formed_by — a reason"],
        [shapeInstanceLine("s", "algorithms:ghost"), '"algorithms:ghost"'],
        [ambiguousLine("c1", "reasoning:invariant", ["lens", "node"]), "lens, node"],
        [edgeLabelLine("x", "claims-need-evidence"), '"claims-need-evidence"'],
        [checkRefLine("architecture", "r", "by", "architecture:ghost"), '"architecture:ghost"'],
        [uncheckedLine("architecture", "r", ["by", "evidence"]), "by, evidence"],
        [unknownKeyLine("architecture", "file/r", "stray", "unread"), '"stray"'],
        [reasonEdgeLine("algorithms:nope"), '"algorithms:nope"'],
        [lensLine("sequential", "algorithms:ghost"), '"algorithms:ghost"'],
        [groundLine("c1", "reasoning:nope"), '"reasoning:nope"'],
        [relationLine("a", "requires", "b", "metric", ["principle"]), "{principle}"],
    ];
    for (const [line, part] of lines) {
        assert.ok(line.includes(part), line);
    }
});

test("a check declaration line tells a ref that names no record from one that names the wrong kind", () => {
    assert.ok(declarationLine("rule", "enforces", "architecture:ghost", false).endsWith("names no record"));
    assert.ok(declarationLine("rule", "detects", "architecture:x", true).endsWith("names a record of the wrong kind"));
});