# tests/core/registries/board.registry.test.ts

> 52 lines of code and 0 definitions.

Tree: Coordination tree
Language: typescript
Canonical: https://banes-lab.com/anatomy/coordination#file-coordination-tests-core-registries-board-registry-test-ts
Source text: https://banes-lab.com/assets/sources/source.9be36a688928acf0e2ff44d9205e5bd046c36cf341ba390d8da239a5730df015.generated.txt

## Source

```typescript
import {
    currentWaiters,
    releaseAgent,
    releaseWaiter,
    waitersPath,
    writeWaiters,
} from "../../../tools/core/registries/board.registry.ts";
import { describe, it } from "node:test";
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
import assert from "node:assert/strict";
import { join } from "node:path";
import { tmpdir } from "node:os";

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, []);
            writeFileSync(waitersPath(root), "{ not json");
            assert.deepEqual(currentWaiters(root, 0), []);
            writeFileSync(waitersPath(root), '[{"id":1}]');
            assert.deepEqual(currentWaiters(root, 0), []);
        });
    });
});
```
