test.coordination/core/readers/agenda.reader.test.ts
test.coordination/core/readers/agenda.reader.test.ts is a file in Codebase Testing. 53 lines of code and 0 definitions.
import {
admissibleInvariants,
agendaInvariants,
agendaOrdinalOf,
agendaRows,
disorderedRows,
nextUnraised,
ordinalValue,
plannedInvariants,
} from "coordination-surface/tools/core/readers/agenda.reader.ts";
import { describe, it } from "vitest";
import assert from "node:assert/strict";
const AGENDA = [
"| planned | invariant | what it must establish | state |",
"|---|---|---|---|",
"| 1 | `one-writer` | x | planned |",
"| 2 | `lock` | x | `open` — held |",
"| 1b | `early` | x | planned |",
"| 3 | `later` | x | `planned` — noted |",
"| 3 | `one-writer` | x | planned |",
].join("\n");
describe("agendaRows", () => {
it("reads each named invariant once with its ordinal and whether it is still planned", () => {
assert.deepEqual(agendaRows(AGENDA), [
{ invariant: "one-writer", ordinal: "1", planned: true },
{ invariant: "lock", ordinal: "2", planned: false },
{ invariant: "early", ordinal: "1b", planned: true },
{ invariant: "later", ordinal: "3", planned: true },
]);
assert.deepEqual(agendaInvariants(AGENDA), ["one-writer", "lock", "early", "later"]);
assert.deepEqual(plannedInvariants(AGENDA), ["one-writer", "early", "later"]);
assert.equal(agendaOrdinalOf(AGENDA, "early"), "1b");
assert.equal(agendaOrdinalOf(AGENDA, "absent"), "");
});
});
describe("ordinalValue and disorderedRows", () => {
it("order ordinals by number then letter suffix, and name a row written after a later one", () => {
assert.equal(ordinalValue("2"), 2);
assert.ok((ordinalValue("1b") ?? 0) > (ordinalValue("1a") ?? 0));
assert.ok((ordinalValue("1z") ?? 0) < 2);
assert.equal(ordinalValue("b1"), null);
assert.equal(ordinalValue("1B"), null);
assert.deepEqual(disorderedRows(AGENDA), [{ after: "lock", invariant: "early", ordinal: "1b" }]);
});
});
describe("admissibleInvariants and nextUnraised", () => {
it("offer the planned invariants no venue raises yet, first one first", () => {
const venues = [`venues/one-writer.1.blocking.md`];
assert.deepEqual(admissibleInvariants(AGENDA, venues), ["early", "later"]);
assert.equal(nextUnraised(AGENDA, venues), "early");
assert.equal(nextUnraised("", venues), null);
});
});