test.govlab/context/core/validators/exemplar.validator.test.ts

test.govlab/context/core/validators/exemplar.validator.test.ts is a file in Codebase Testing. 40 lines of code and 0 definitions.

import { type Exemplar, createAlgoGrammar, createGovlabContext } from "@govlab/context";
import type { ContractRecord } from "@govlab/context/types/algorithm.types.ts";
import assert from "node:assert/strict";
import { exemplarGapsOf } from "@govlab/context/core/validators/exemplar.validator.ts";
import { test } from "vitest";

const record = (id: string, exemplar?: Exemplar, meta = false): ContractRecord => ({
    composes: [],
    flow: [],
    force: [],
    id,
    intent: "i",
    invariant: "v",
    productions: [],
    title: id,
    ...(exemplar ? { exemplar } : {}),
    ...(meta ? { meta } : {}),
});

test("a non-meta contract with a missing, identical or codeless exemplar is a gap, and a meta record is exempt", () => {
    const algo = createAlgoGrammar({
        data: [
            {
                category: "planted",
                records: [
                    record("missing"),
                    record("identical", { after: "x = 1;", before: "x = 1;", lang: "ts", medium: "code" }),
                    record("codeless", { after: "prose", before: "other", lang: "ts", medium: "code" }),
                    record("sound", { after: "x = 1;", before: "x = 2;", lang: "ts", medium: "code" }),
                    record("meta-root", undefined, true),
                ],
                tier: "leaf",
            },
        ],
        symbols: [],
    });
    assert.deepEqual(
        exemplarGapsOf(algo).map((gap) => gap.id),
        ["missing", "identical", "codeless"],
    );
    assert.deepEqual(createGovlabContext().validateResolution().exemplarGaps, []);
});