testNameHistoryFollowsOneName

tcmts.share.test.testNameHistoryFollowsOneName · #y3ottgoa · term

A definition's history: the entries that changed what its name points at, newest first, read down the name's path in each entry.

import type { Codebase } from "#codebase/tcmts/cli/codebase";
import { nameHistory, shareCache } from "#codebase/tcmts/share";
import { storyStore } from "#codebase/tcmts/share/test";
import assert from "node:assert/strict";

export const testNameHistoryFollowsOneName = () => {
  const { store, entries } = storyStore();
  const s = { cb: { store } as unknown as Codebase, cache: shareCache() };
  const changes = (name: string) =>
    nameHistory(s, name).map((e) => `${entries.indexOf(e.causal)} ${e.change}`);
  assert.deepEqual(changes("lib.a"), ["5 changed", "1 changed", "0 added"]);
  assert.deepEqual(changes("lib.c"), ["6 removed", "1 changed", "0 added"]);
  assert.deepEqual(
    changes("lib.T"),
    ["4 changed", "0 added"],
    "a type beside a value of its name is the name's too",
  );
  assert.deepEqual(changes("lib.sub.s"), ["2 added"]);
}

uses