test.coordination/core/runners/venue.runner.test.ts

test.coordination/core/runners/venue.runner.test.ts is a file in Codebase Testing. 71 lines of code and 0 definitions.

import {
    RAISE_AGENDA_MISSING,
    RELOCATE_ROOT_MISSING,
    SUCCESSOR_NOT_VENUE,
    raiseRefused,
    relocateDestinationTaken,
    relocateNotVenue,
    relocateSourceMissing,
    relocated,
    successorNotPlanned,
    successorVenueMissing,
} from "coordination-surface/tools/core/strings/venue.strings.ts";
import { describe, it } from "vitest";
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
import { join, resolve } from "node:path";
import { runRaise, runRelocate, runSuccessor } from "coordination-surface/tools/core/runners/venue.runner.ts";
import assert from "node:assert/strict";
import { surfacePrefix } from "coordination-surface/config/surface.config.ts";
import { tmpdir } from "node:os";
import { writeVerbatim } from "@govlab/canonical-write";

const VENUE = "probe.blocking.md";

const refused = (reason: string): { code: number; message: string; raised: null } => ({
    code: 2,
    message: raiseRefused(reason),
    raised: null,
});

const withRoot = function withRoot(check: (root: string) => void): void {
    const root = mkdtempSync(join(tmpdir(), "coordination-venue-run-"));
    try {
        check(root);
    } finally {
        rmSync(root, { force: true, recursive: true });
    }
};

describe("runSuccessor", () => {
    it("refuses a target that is no venue, a missing venue, and an invariant the agenda does not plan", () => {
        withRoot((root) => {
            const absolute = join(root, VENUE);
            const request = { absolute, invariant: "unplanned-probe", target: VENUE };
            assert.deepEqual(runSuccessor({ ...request, target: "notes.md" }), refused(SUCCESSOR_NOT_VENUE));
            assert.deepEqual(runSuccessor(request), refused(successorVenueMissing(VENUE)));
            writeVerbatim(absolute, "# Venue\n");
            assert.deepEqual(runSuccessor(request), refused(successorNotPlanned("unplanned-probe")));
        });
    });
});

describe("runRelocate", () => {
    it("moves a stray venue into the venue root, and refuses a missing root, a taken destination or a missing source", () => {
        withRoot((root) => {
            const request = { name: VENUE, repoRoot: root };
            assert.deepEqual(runRelocate({ ...request, name: "notes.md" }), refused(relocateNotVenue("notes.md")));
            const venueRoot = resolve(root, surfacePrefix());
            assert.deepEqual(runRelocate(request), refused(RELOCATE_ROOT_MISSING));
            mkdirSync(venueRoot, { recursive: true });
            assert.deepEqual(runRelocate(request), refused(relocateSourceMissing(VENUE)));
            writeVerbatim(join(root, VENUE), "# Venue\n");
            assert.deepEqual(runRelocate(request), { code: 0, message: relocated(VENUE), raised: VENUE });
            assert.equal(readFileSync(join(venueRoot, VENUE), "utf8"), "# Venue\n");
            assert.equal(existsSync(join(root, VENUE)), false);
            writeVerbatim(join(root, VENUE), "# Venue\n");
            assert.deepEqual(runRelocate(request), refused(relocateDestinationTaken(VENUE)));
        });
    });
});

describe("runRaise", () => {
    it("passes the raise plan's refusal through when the agenda is missing", () => {
        withRoot((root) => {
            assert.deepEqual(runRaise({ declared: null, repoRoot: root, seats: ["A"] }), refused(RAISE_AGENDA_MISSING));
        });
    });
});