Files
govoplan-core/webui/tests/definition-graph.test.ts

69 lines
1.7 KiB
TypeScript

import {
createDefinitionGraphNode,
definitionConnectionError,
type DefinitionGraph,
type DefinitionGraphNodeType
} from "../src/definitionGraph";
const library: DefinitionGraphNodeType[] = [
{
type: "start",
category: "control",
category_label: "Control",
label: "Start",
description: "Start",
icon: "play",
input_ports: [],
output_ports: [
{ id: "output", label: "Output", required: true, multiple: false, minimum_connections: 1 }
],
config_fields: [],
default_config: { mode: "manual" }
},
{
type: "end",
category: "control",
category_label: "Control",
label: "End",
description: "End",
icon: "circle-stop",
input_ports: [
{ id: "input", label: "Input", required: true, multiple: false, minimum_connections: 1 }
],
output_ports: [],
config_fields: [],
default_config: {}
}
];
const graph: DefinitionGraph = {
schema_version: 1,
nodes: [
{ id: "start", type: "start", label: "Start", position: { x: 0, y: 0 }, config: {} },
{ id: "end", type: "end", label: "End", position: { x: 100, y: 0 }, config: {} }
],
edges: []
};
if (definitionConnectionError(
graph,
library,
{ source: "start", target: "end" }
) !== null) {
throw new Error("Expected a valid library-driven connection.");
}
graph.edges.push({ id: "edge", source: "start", target: "end" });
if (!definitionConnectionError(
graph,
library,
{ source: "start", target: "end" }
)) {
throw new Error("Expected duplicate connection validation.");
}
const created = createDefinitionGraphNode("start", { x: 40, y: 50 }, library);
if (created.config.mode !== "manual" || created.position.x !== 40) {
throw new Error("Expected node creation to clone library defaults.");
}