test.coordination/core/resolvers/checklist.resolver.test.ts

test.coordination/core/resolvers/checklist.resolver.test.ts is a file in Codebase Testing. 56 lines of code and 0 definitions.

import {
    agentBreaches,
    citedIds,
    closureBreaches,
    declaredId,
    idBreaches,
    isDigit,
} from "coordination-surface/tools/core/resolvers/checklist.resolver.ts";
import { describe, it } from "vitest";
import { TASK_MARKER } from "coordination-surface/tools/core/constants/checklist.constants.ts";
import assert from "node:assert/strict";

const task = function task(id: string, rest = ""): string {
    return `${TASK_MARKER} ${id} ${rest}`.trimEnd();
};

describe("isDigit, declaredId and citedIds", () => {
    it("read a three-part task id where a task opens, and every id cited in prose", () => {
        assert.equal(isDigit("7"), true);
        assert.equal(isDigit("x"), false);
        assert.equal(declaredId(task("1.2.3", "write it")), "1.2.3");
        assert.equal(declaredId(task("1.2", "two parts")), null);
        assert.equal(declaredId("prose 1.2.3"), null);
        assert.deepEqual(citedIds("after 1.2.3 and 4.5.6, not 7.8"), ["1.2.3", "4.5.6"]);
    });
});

describe("agentBreaches", () => {
    it("reports a verifier or owner naming a seat that is not active", () => {
        const lines = ["*verifier:* A", "*owner:* B", "*owner:* AB"];
        assert.deepEqual(
            agentBreaches(lines, new Set(["A"])).map((breach) => [breach.id, breach.line]),
            [["owner:B", 2]],
        );
    });
});

describe("closureBreaches", () => {
    it("reports open rows in a later phase than the closure row, and nothing without one", () => {
        const lines = ["CLOSES: 2.1.1", task("2.1.1"), task("3.1.1"), task("1.1.1")];
        const [breach] = closureBreaches(lines);
        assert.ok(breach !== undefined);
        assert.equal(breach.kind, "closureBeforeItsDependencies");
        assert.ok(breach.actual.includes("3.1.1"));
        assert.equal(breach.line, 1);
        assert.deepEqual(closureBreaches([task("3.1.1")]), []);
    });
});

describe("idBreaches", () => {
    it("reports an id declared twice and an id cited that no task declares", () => {
        const lines = [task("1.1.1"), task("1.1.1"), "depends on 1.1.1 and 9.9.9"];
        assert.deepEqual(
            idBreaches(lines).map((breach) => [breach.kind, breach.id, breach.line]),
            [
                ["duplicateId", "1.1.1", 2],
                ["danglingReference", "9.9.9", 3],
            ],
        );
    });
});