test.govlab/context/core/resolvers/reference.resolver.test.ts
test.govlab/context/core/resolvers/reference.resolver.test.ts is a file in Codebase Testing. 42 lines of code and 0 definitions.
import {
REF_COLLECTIONS,
bareReasonId,
collectionRefResolver,
kindRefResolves,
kindsHolding,
resolveTarget,
} from "@govlab/context/core/resolvers/reference.resolver.ts";
import assert from "node:assert/strict";
import { test } from "vitest";
const SHARED_ID = "invariant";
const KIND_MEMBERS = new Map([
["lens", new Set(["cause", SHARED_ID])],
["substrate-node", new Set([SHARED_ID])],
]);
const faces = {
algo: { get: (id: string) => (id === "real-contract" ? { id } : null) },
reason: { axes: () => [], kindMembers: () => KIND_MEMBERS, models: () => [], resolve: () => null },
};
test("collectionRefResolver resolves collection refs, kind-qualified reason refs, and a bare id only one kind holds", () => {
const resolve = collectionRefResolver(faces);
assert.equal(resolve("algorithms:real-contract"), true);
assert.equal(resolve("algorithms:ghost"), false);
assert.equal(resolve("reasoning:lens:cause"), true);
assert.equal(resolve("reasoning:mode:cause"), false);
assert.equal(resolve("reasoning:cause"), true);
assert.equal(resolve(`reasoning:${SHARED_ID}`), false);
});
test("resolveTarget needs a collection prefix it knows", () => {
assert.equal(resolveTarget(faces, "algorithms:real-contract"), true);
assert.equal(resolveTarget(faces, "real-contract"), false);
assert.equal(resolveTarget(faces, "elsewhere:real-contract"), false);
assert.ok(REF_COLLECTIONS.has("algorithms"));
assert.ok(REF_COLLECTIONS.has("reasoning"));
});
test("kindRefResolves, kindsHolding and bareReasonId read a reasoning ref", () => {
assert.equal(kindRefResolves(KIND_MEMBERS, "reasoning:lens:cause"), true);
assert.equal(kindRefResolves(KIND_MEMBERS, "reasoning:cause"), false);
assert.deepEqual(kindsHolding(KIND_MEMBERS, SHARED_ID), ["lens", "substrate-node"]);
assert.equal(bareReasonId("reasoning:lens:cause"), "lens:cause");
assert.equal(bareReasonId("algorithms:x"), "algorithms:x");
});