test.build/core/converters/graph.concept.converter.test.ts
test.build/core/converters/graph.concept.converter.test.ts is a file in Codebase Testing. 36 lines of code and 0 definitions.
import { CONCEPTS, createGovlabContext } from "@govlab/context";
import { describe, expect, it } from "vitest";
import { conceptEdges } from "@banes-lab/build-scripts/core/converters/graph.concept.converter.ts";
import { createResolver } from "@banes-lab/build-scripts/core/resolvers/ontology.resolver.ts";
const RELATION = "concept";
const resolve = createResolver(createGovlabContext());
describe("conceptEdges", () => {
it("joins every member of every bundled concept to its home", () => {
const edges = conceptEdges(CONCEPTS, resolve, RELATION);
const members = CONCEPTS.reduce((count, concept) => count + concept.members.length, 0);
expect(edges).toHaveLength(members);
for (const concept of CONCEPTS) {
const home = resolve.target(concept.home).ref;
const joined = edges.filter((edge) => edge.to === home).map((edge) => edge.from);
expect(joined).toEqual(concept.members.map((member) => resolve.target(member).ref));
}
expect(edges.every((edge) => edge.relation === RELATION)).toBe(true);
});
it("drops a member that resolves to nothing, and a concept whose home resolves to nothing", () => {
const planted = [
{
home: "reasoning:dimension:cause",
id: "cause",
members: ["reasoning:lens:cause", "reasoning:lens:ghost"],
},
{ home: "reasoning:dimension:ghost", id: "ghost", members: ["reasoning:lens:cause"] },
];
expect(conceptEdges(planted, resolve, RELATION)).toEqual([
{
from: resolve.target("reasoning:lens:cause").ref,
relation: RELATION,
to: resolve.target("reasoning:dimension:cause").ref,
},
]);
});
});