test.build/core/converters/view.converter.test.ts
test.build/core/converters/view.converter.test.ts is a file in Codebase Testing. 44 lines of code and 0 definitions.
import { type Exemplar, createGovlabContext } from "@govlab/context";
import { describe, expect, it } from "vitest";
import {
distinctsOf,
exemplarOf,
groupBy,
layerRef,
orNull,
} from "@banes-lab/build-scripts/core/converters/view.converter.ts";
import { createResolver } from "@banes-lab/build-scripts/core/resolvers/ontology.resolver.ts";
import { createReverseIndex } from "@banes-lab/build-scripts/core/converters/ontology.index.converter.ts";
import { forceNames } from "@banes-lab/build-scripts/core/converters/layer.converter.ts";
const context = createGovlabContext();
const resolve = createResolver(context);
const sources = { context, forces: forceNames(context), index: createReverseIndex(context, resolve), resolve };
describe("the view helpers", () => {
it("turns an empty or missing text into null and keeps any other", () => {
expect(orNull()).toBeNull();
expect(orNull("")).toBeNull();
expect(orNull("held")).toBe("held");
});
it("copies an exemplar and answers null for a record without one", () => {
const exemplar: Exemplar = { after: "b", before: "a", lang: "flow", medium: "composite" };
expect(exemplarOf()).toBeNull();
expect(exemplarOf(exemplar)).toStrictEqual(exemplar);
expect(exemplarOf(exemplar)).not.toBe(exemplar);
});
it("groups items by key in first-seen order", () => {
expect(groupBy(["ab", "b", "ac"], (item) => item.charAt(0))).toStrictEqual([
["a", ["ab", "ac"]],
["b", ["b"]],
]);
});
it("places a principle in its layer and answers null for an id no layer holds", () => {
expect(layerRef(sources, "stated-invariant")?.ref?.startsWith("layer:")).toBe(true);
expect(layerRef(sources, "no-such-record")).toBeNull();
});
it("resolves each distinct declaration through the resolver it is given and keeps its reason", () => {
const found = distinctsOf([{ id: "architecture:determinism", reason: "one differs" }], resolve.target);
expect(found).toStrictEqual([{ reason: "one differs", record: resolve.target("architecture:determinism") }]);
expect(found[0]?.record.ref).toBe("architecture:determinism");
expect(distinctsOf(undefined, resolve.target)).toStrictEqual([]);
});
});