test.govlab/context/core/observers/record.observer.test.ts
test.govlab/context/core/observers/record.observer.test.ts is a file in Codebase Testing. 52 lines of code and 0 definitions.
import { ReadAudit } from "@govlab/context/core/observers/record.observer.ts";
import assert from "node:assert/strict";
import { createArchRelations } from "@govlab/context";
import { foldCategories } from "@govlab/context/core/loaders/ontology.loader.ts";
import { test } from "vitest";
const keysOf = (audit: ReadAudit): string[] =>
audit.unread().map((entry) => `${entry.record} ${entry.key} ${entry.reason}`);
test("a key no normalizer reads is reported, at any depth, and a read key is not", () => {
const audit = new ReadAudit("fixture");
const tracked = audit.track({ id: "r1", kept: 1, nested: { read: 1, stray: 2 }, stray: 3 }, "file");
assert.equal(tracked["kept"], 1);
const { nested } = tracked;
assert.ok(typeof nested === "object" && nested !== null && "read" in nested);
assert.equal(Reflect.get(nested, "read"), 1);
assert.deepEqual(keysOf(audit).toSorted(), [
"file/r1 id unread",
"file/r1 nested.stray unread",
"file/r1 stray unread",
]);
});
test("an entry that is not a record, and a record a coercer rejects, are reported whole", () => {
const audit = new ReadAudit("fixture");
const records = audit.records([{ id: "ok" }, "loose", 7], "list");
assert.equal(records.length, 1);
audit.reject({ id: "bad" }, "list");
assert.deepEqual(keysOf(audit), [
"list#1 * not-a-record",
"list#2 * not-a-record",
"list/bad * rejected",
"list/ok id unread",
]);
});
test("records handed on to their own tracking are counted once, under their own record", () => {
const audit = new ReadAudit("fixture");
const group = audit.track({ category: "c", copyright: "notice", records: [{ id: "a", name: "A" }] }, "categories");
audit.attribution(group);
for (const record of audit.records(group["records"], "c")) {
assert.equal(record["id"], "a");
}
assert.equal(group["category"], "c");
assert.deepEqual(keysOf(audit), ["c/a name unread"]);
assert.deepEqual(audit.attributions(), ["notice"]);
});
test("a category fold reports the key its normalizer never reads", () => {
const audit = new ReadAudit("fixture");
const ids = foldCategories([{ category: "c", records: [{ id: "p", planted: true }] }], (raw) => raw["id"], audit);
assert.deepEqual(ids, ["p"]);
assert.deepEqual(keysOf(audit), ["c/p planted unread"]);
});
test("the bundled collections read every key their data carries", () => {
assert.deepEqual(createArchRelations().unreadKeys(), []);
});