repositories / pi-ext
pi-ext
bugabingas pi extensions
owned by admin
extensions/the-system/__tests__/board-state.test.ts
Rawimport assert from "node:assert/strict";
import { describe, it } from "vitest";
import {
boardStateFor,
boardStateForInitialization,
boardStateSource,
emptyBoardState,
parseBoardState,
updateBoardState,
} from "../board-state.ts";
import type { BundleDocumentRecord, DocumentMetadata } from "../documents.ts";
import { SystemDocumentError } from "../documents.ts";
const document = (metadata: DocumentMetadata): BundleDocumentRecord => ({
path: `.system/${metadata.type}s/${metadata.id}-fixture/index.md`,
metadata,
frontmatter: new Map(),
});
const spec = document({
id: "PX-SPEC-SPEC0001",
type: "spec",
title: "Contract",
});
const planA = document({
id: "PX-PLAN-PLAN0001",
type: "plan",
title: "Build",
spec: spec.metadata.id,
status: "approved",
});
const planB = document({
id: "PX-PLAN-PLAN0002",
type: "plan",
title: "Test",
spec: spec.metadata.id,
status: "approved",
});
const issue = document({
id: "PX-ISSUE-ISSUE001",
type: "issue",
title: "Bug",
specs: [spec.metadata.id],
});
const documents = [spec, planA, planB, issue];
const at = "2026-03-20T12:00:00.000Z";
describe("board state", () => {
it("defaults specs and plans to todo and issues to open", () => {
const board = emptyBoardState();
assert.equal(boardStateFor(board, spec.metadata), "todo");
assert.equal(boardStateFor(board, planA.metadata), "todo");
assert.equal(boardStateFor(board, issue.metadata), "open");
});
it("keeps spec state manual while requiring every existing plan done", () => {
let board = emptyBoardState();
assert.throws(
() =>
updateBoardState(
board,
documents,
spec.metadata.id,
"done",
"manual",
at,
),
(error: unknown) =>
error instanceof SystemDocumentError &&
error.code === "board.spec-plans",
);
board = updateBoardState(
board,
documents,
planA.metadata.id,
"done",
"manual",
at,
);
board = updateBoardState(
board,
documents,
planB.metadata.id,
"done",
"manual",
at,
);
assert.equal(boardStateFor(board, spec.metadata), "todo");
board = updateBoardState(
board,
documents,
spec.metadata.id,
"done",
"manual",
at,
);
assert.equal(boardStateFor(board, spec.metadata), "done");
});
it("allows a planless spec done and never lets issues demote it", () => {
let board = updateBoardState(
emptyBoardState(),
[spec, issue],
spec.metadata.id,
"done",
"manual",
at,
);
board = updateBoardState(
board,
[spec, issue],
issue.metadata.id,
"open",
"manual",
at,
);
assert.equal(boardStateFor(board, spec.metadata), "done");
});
it("reopening one plan demotes its spec without changing sibling plans", () => {
let board = emptyBoardState();
for (const id of [planA.metadata.id, planB.metadata.id, spec.metadata.id])
board = updateBoardState(board, documents, id, "done", "manual", at);
board = updateBoardState(
board,
documents,
planA.metadata.id,
"todo",
"manual",
at,
);
assert.equal(boardStateFor(board, spec.metadata), "todo");
assert.equal(boardStateFor(board, planB.metadata), "done");
});
it("round-trips agent entries with notes and clears them on later writes", () => {
let board = updateBoardState(
emptyBoardState(),
documents,
planA.metadata.id,
"done",
"agent",
at,
" exec verified: 12 tests pass ",
);
assert.deepEqual(board.items[planA.metadata.id], {
state: "done",
source: "agent",
updatedAt: at,
note: "exec verified: 12 tests pass",
});
assert.deepEqual(parseBoardState(boardStateSource(board), "PX"), board);
board = updateBoardState(
board,
documents,
planA.metadata.id,
"todo",
"manual",
at,
);
assert.deepEqual(board.items[planA.metadata.id], {
state: "todo",
source: "manual",
updatedAt: at,
});
});
it("rejects unknown sources and oversized notes", () => {
const entry = (extra: string) =>
`{"schemaVersion":0,"items":{"${planA.metadata.id}":{"state":"done","source":${extra}}}}`;
assert.throws(
() => parseBoardState(entry(`"robot","updatedAt":"${at}"`), "PX"),
(error: unknown) =>
error instanceof SystemDocumentError && error.code === "board.source",
);
assert.throws(
() =>
parseBoardState(
entry(`"agent","updatedAt":"${at}","note":"${"x".repeat(201)}"`),
"PX",
),
(error: unknown) =>
error instanceof SystemDocumentError && error.code === "board.note",
);
assert.throws(
() =>
parseBoardState(entry(`"agent","updatedAt":"${at}","why":"x"`), "PX"),
(error: unknown) =>
error instanceof SystemDocumentError && error.code === "board.keys",
);
});
it("parses strict schema 0 and directly rewrites version mismatches", () => {
const current = updateBoardState(
emptyBoardState(),
documents,
issue.metadata.id,
"done",
"assess",
at,
);
assert.deepEqual(parseBoardState(boardStateSource(current), "PX"), current);
const mismatched = boardStateSource(current).replace(
'"schemaVersion": 0',
'"schemaVersion": 9',
);
assert.equal(
boardStateForInitialization(mismatched, "PX").sourceSchemaVersion,
9,
);
assert.throws(
() => parseBoardState(mismatched, "PX"),
(error: unknown) =>
error instanceof SystemDocumentError && error.code === "board.version",
);
});
});