Files
confidence-engine/tests/experimental/rto-explicit-node-formulation.test.js

43 lines
1.6 KiB
JavaScript

import { describe, expect, it } from "vitest";
import fixture from "@/tests/fixtures/live-product-launch-update-response.json";
import { formulateQuestion } from "@/lib/graph/question-formulator.js";
describe("RTO.A5 explicit-node formulation apparatus", () => {
it("formulates directly for nxmeiab without selector invocation or graph mutation", () => {
const graph = structuredClone(fixture.updatedSituationGraph);
const graphBefore = structuredClone(graph);
const capturedSelectedQuestionNodeIdBefore = fixture.selectedQuestion.nodeId;
const activeUnknownNodeIdBefore = graph.activeUnknownNodeId ?? null;
const resolvedNodeIdsBefore = structuredClone(graph.resolvedNodeIds || []);
const target = graph.nodes.find((node) => node.id === "nxmeiab");
expect(target).toBeTruthy();
expect(target?.kind).toBe("unknown");
expect(target?.status).not.toBe("resolved");
const result = formulateQuestion({
node: target,
graph,
context: {
selectionState: {
status: "selected",
nodeId: "nxmeiab",
},
},
});
expect(result).toBeTruthy();
expect(typeof result.question).toBe("string");
expect(result.question.length).toBeGreaterThan(0);
expect(result.question.toLowerCase()).toMatch(
/competitor|competitors|similar products|release/,
);
expect(fixture.selectedQuestion.nodeId).toBe(capturedSelectedQuestionNodeIdBefore);
expect(graph.activeUnknownNodeId ?? null).toBe(activeUnknownNodeIdBefore);
expect(graph.resolvedNodeIds || []).toEqual(resolvedNodeIdsBefore);
expect(graph).toEqual(graphBefore);
});
});