test.coordination/core/registries/board.registry.test.ts

test.coordination/core/registries/board.registry.test.ts is a file in Codebase Testing. 53 lines of code and 0 definitions.

import {
    currentWaiters,
    releaseAgent,
    releaseWaiter,
    waitersPath,
    writeWaiters,
} from "coordination-surface/tools/core/registries/board.registry.ts";
import { describe, it } from "vitest";
import { mkdtempSync, rmSync } from "node:fs";
import assert from "node:assert/strict";
import { join } from "node:path";
import { tmpdir } from "node:os";
import { writeVerbatim } from "@govlab/canonical-write";

const withRoot = function withRoot(probe: (root: string) => void): void {
    const root = mkdtempSync(join(tmpdir(), "board-registry-"));
    try {
        probe(root);
    } finally {
        rmSync(root, { force: true, recursive: true });
    }
};

describe("currentWaiters, releaseWaiter and releaseAgent", () => {
    it("keeps unexpired waiters and releases one by id or every one an agent holds", () => {
        withRoot((root) => {
            writeWaiters(root, [
                { agent: "A", expiresAt: 100, id: "a1" },
                { agent: "A", expiresAt: 300, id: "a2" },
                { agent: "B", expiresAt: 300, id: "b1" },
            ]);
            assert.deepEqual(
                currentWaiters(root, 200).map((waiter) => waiter.id),
                ["a2", "b1"],
            );

            releaseWaiter(root, "b1", 200);
            assert.deepEqual(
                currentWaiters(root, 200).map((waiter) => waiter.id),
                ["a2"],
            );

            releaseAgent(root, "A", 200);
            assert.deepEqual(currentWaiters(root, 200), []);
        });
    });

    it("reads no waiters from a missing, unreadable or malformed file", () => {
        withRoot((root) => {
            assert.deepEqual(currentWaiters(root, 0), []);
            writeWaiters(root, []);
            writeVerbatim(waitersPath(root), "{ not json");
            assert.deepEqual(currentWaiters(root, 0), []);
            writeVerbatim(waitersPath(root), '[{"id":1}]');
            assert.deepEqual(currentWaiters(root, 0), []);
        });
    });
});