feat: add datasource and definition graph contracts
This commit is contained in:
68
webui/tests/definition-graph.test.ts
Normal file
68
webui/tests/definition-graph.test.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
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.");
|
||||
}
|
||||
Reference in New Issue
Block a user