diff --git a/test/LGraph.test.ts b/test/LGraph.test.ts index bb23d6ea..82dcbffd 100644 --- a/test/LGraph.test.ts +++ b/test/LGraph.test.ts @@ -24,6 +24,11 @@ describe.concurrent("LGraph", () => { const basicLGraph = new LGraph(basicSerialisableGraph) expect(basicLGraph).toMatchSnapshot("basicLGraph") }) + + lgTest("supports schema v0.4 graphs", ({ expect, oldSchemaGraph }) => { + const fromOldSchema = new LGraph(oldSchemaGraph) + expect(fromOldSchema).toMatchSnapshot("oldSchemaGraph") + }) }) describe.concurrent("Legacy LGraph Compatibility Layer", () => { diff --git a/test/__snapshots__/LGraph.test.ts.snap b/test/__snapshots__/LGraph.test.ts.snap index 160eb854..40d5dcaf 100644 --- a/test/__snapshots__/LGraph.test.ts.snap +++ b/test/__snapshots__/LGraph.test.ts.snap @@ -261,10 +261,6 @@ LGraph { "globaltime": 0, "inputs": {}, "iteration": 0, - "lastGroupId": 123, - "last_link_id": 0, - "last_node_id": 1, - "last_reroute_id": undefined, "last_update_time": 0, "links": Map {}, "list_of_graphcanvas": null, @@ -274,6 +270,12 @@ LGraph { "outputs": {}, "runningtime": 0, "starttime": 0, + "state": { + "lastGroupId": 123, + "lastLinkId": 0, + "lastNodeId": 1, + "lastRerouteId": 0, + }, "status": 1, "vars": {}, "version": 1, @@ -305,10 +307,6 @@ LGraph { "globaltime": 0, "inputs": {}, "iteration": 0, - "lastGroupId": -1, - "last_link_id": 0, - "last_node_id": 0, - "last_reroute_id": undefined, "last_update_time": 0, "links": Map {}, "list_of_graphcanvas": null, @@ -318,8 +316,296 @@ LGraph { "outputs": {}, "runningtime": 0, "starttime": 0, + "state": { + "lastGroupId": 0, + "lastLinkId": 0, + "lastNodeId": 0, + "lastRerouteId": 0, + }, "status": 1, "vars": {}, "version": 1, } `; + +exports[`LGraph > supports schema v0.4 graphs > oldSchemaGraph 1`] = ` +LGraph { + "_groups": [ + LGraphGroup { + "_bounding": Float32Array [ + 20, + 20, + 1, + 3, + ], + "_children": Set {}, + "_nodes": [], + "_pos": Float32Array [ + 20, + 20, + ], + "_size": Float32Array [ + 1, + 3, + ], + "color": "#6029aa", + "flags": {}, + "font": undefined, + "font_size": 14, + "graph": [Circular], + "id": 123, + "isPointInside": [Function], + "selected": undefined, + "setDirtyCanvas": [Function], + "title": "A group to test with", + }, + ], + "_input_nodes": undefined, + "_last_trigger_time": undefined, + "_links": Map {}, + "_nodes": [ + LGraphNode { + "_collapsed_width": undefined, + "_level": undefined, + "_pos": Float32Array [ + 10, + 10, + ], + "_posSize": Float32Array [ + 10, + 10, + 140, + 60, + ], + "_relative_id": undefined, + "_shape": undefined, + "_size": Float32Array [ + 140, + 60, + ], + "action_call": undefined, + "action_triggered": undefined, + "badgePosition": "top-left", + "badges": [], + "bgcolor": undefined, + "block_delete": undefined, + "boxcolor": undefined, + "clip_area": undefined, + "clonable": undefined, + "color": undefined, + "connections": [], + "console": undefined, + "exec_version": undefined, + "execute_triggered": undefined, + "flags": {}, + "gotFocusAt": undefined, + "graph": [Circular], + "has_errors": true, + "horizontal": undefined, + "id": 1, + "ignore_remove": undefined, + "inputs": [], + "last_serialization": { + "id": 1, + }, + "locked": undefined, + "lostFocusAt": undefined, + "mode": undefined, + "mouseOver": undefined, + "optional_inputs": undefined, + "optional_outputs": undefined, + "order": 0, + "outputs": [], + "properties": {}, + "properties_info": [], + "redraw_on_mouse": undefined, + "removable": undefined, + "resizable": undefined, + "selected": undefined, + "serialize_widgets": undefined, + "showAdvanced": undefined, + "skip_subgraph_button": undefined, + "subgraph": undefined, + "title": undefined, + "type": null, + "widgets": undefined, + "widgets_start_y": undefined, + "widgets_up": undefined, + }, + ], + "_nodes_by_id": { + "1": LGraphNode { + "_collapsed_width": undefined, + "_level": undefined, + "_pos": Float32Array [ + 10, + 10, + ], + "_posSize": Float32Array [ + 10, + 10, + 140, + 60, + ], + "_relative_id": undefined, + "_shape": undefined, + "_size": Float32Array [ + 140, + 60, + ], + "action_call": undefined, + "action_triggered": undefined, + "badgePosition": "top-left", + "badges": [], + "bgcolor": undefined, + "block_delete": undefined, + "boxcolor": undefined, + "clip_area": undefined, + "clonable": undefined, + "color": undefined, + "connections": [], + "console": undefined, + "exec_version": undefined, + "execute_triggered": undefined, + "flags": {}, + "gotFocusAt": undefined, + "graph": [Circular], + "has_errors": true, + "horizontal": undefined, + "id": 1, + "ignore_remove": undefined, + "inputs": [], + "last_serialization": { + "id": 1, + }, + "locked": undefined, + "lostFocusAt": undefined, + "mode": undefined, + "mouseOver": undefined, + "optional_inputs": undefined, + "optional_outputs": undefined, + "order": 0, + "outputs": [], + "properties": {}, + "properties_info": [], + "redraw_on_mouse": undefined, + "removable": undefined, + "resizable": undefined, + "selected": undefined, + "serialize_widgets": undefined, + "showAdvanced": undefined, + "skip_subgraph_button": undefined, + "subgraph": undefined, + "title": undefined, + "type": null, + "widgets": undefined, + "widgets_start_y": undefined, + "widgets_up": undefined, + }, + }, + "_nodes_executable": [], + "_nodes_in_order": [ + LGraphNode { + "_collapsed_width": undefined, + "_level": undefined, + "_pos": Float32Array [ + 10, + 10, + ], + "_posSize": Float32Array [ + 10, + 10, + 140, + 60, + ], + "_relative_id": undefined, + "_shape": undefined, + "_size": Float32Array [ + 140, + 60, + ], + "action_call": undefined, + "action_triggered": undefined, + "badgePosition": "top-left", + "badges": [], + "bgcolor": undefined, + "block_delete": undefined, + "boxcolor": undefined, + "clip_area": undefined, + "clonable": undefined, + "color": undefined, + "connections": [], + "console": undefined, + "exec_version": undefined, + "execute_triggered": undefined, + "flags": {}, + "gotFocusAt": undefined, + "graph": [Circular], + "has_errors": true, + "horizontal": undefined, + "id": 1, + "ignore_remove": undefined, + "inputs": [], + "last_serialization": { + "id": 1, + }, + "locked": undefined, + "lostFocusAt": undefined, + "mode": undefined, + "mouseOver": undefined, + "optional_inputs": undefined, + "optional_outputs": undefined, + "order": 0, + "outputs": [], + "properties": {}, + "properties_info": [], + "redraw_on_mouse": undefined, + "removable": undefined, + "resizable": undefined, + "selected": undefined, + "serialize_widgets": undefined, + "showAdvanced": undefined, + "skip_subgraph_button": undefined, + "subgraph": undefined, + "title": undefined, + "type": null, + "widgets": undefined, + "widgets_start_y": undefined, + "widgets_up": undefined, + }, + ], + "_subgraph_node": undefined, + "_version": 3, + "catch_errors": true, + "config": {}, + "elapsed_time": 0.01, + "errors_in_execution": undefined, + "execution_time": undefined, + "execution_timer_id": undefined, + "extra": {}, + "filter": undefined, + "fixedtime": 0, + "fixedtime_lapse": 0.01, + "globaltime": 0, + "inputs": {}, + "iteration": 0, + "last_update_time": 0, + "links": Map {}, + "list_of_graphcanvas": null, + "nodes_actioning": [], + "nodes_executedAction": [], + "nodes_executing": [], + "outputs": {}, + "runningtime": 0, + "starttime": 0, + "state": { + "lastGroupId": 123, + "lastLinkId": 0, + "lastNodeId": 1, + "lastRerouteId": 0, + }, + "status": 1, + "vars": {}, + "version": 0.4, +} +`; diff --git a/test/lgTest.ts b/test/lgTest.ts index 0d1d21a5..5177af3e 100644 --- a/test/lgTest.ts +++ b/test/lgTest.ts @@ -1,22 +1,52 @@ import { test } from "vitest" -import type { ISerialisedGraph } from "../src/types/serialisation" +import type { ISerialisedGraph, SerialisableGraph } from "../src/types/serialisation" import { LGraph } from "@/LGraph" -const minimalSerialisableGraph: ISerialisedGraph = { - version: 1, +const oldSchemaGraph: ISerialisedGraph = { + version: 0.4, config: {}, last_node_id: 0, last_link_id: 0, + groups: [ + { + id: 123, + bounding: [20, 20, 1, 3], + color: "#6029aa", + font_size: 14, + title: "A group to test with", + }, + ], + nodes: [ + { + id: 1, + }, + ], + links: [], +} + +const minimalSerialisableGraph: SerialisableGraph = { + version: 1, + config: {}, + state: { + lastNodeId: 0, + lastLinkId: 0, + lastGroupId: 0, + lastRerouteId: 0 + }, nodes: [], links: [], groups: [], } -const basicSerialisableGraph: ISerialisedGraph = { +const basicSerialisableGraph: SerialisableGraph = { version: 1, config: {}, - last_node_id: 0, - last_link_id: 0, + state: { + lastNodeId: 0, + lastLinkId: 0, + lastGroupId: 0, + lastRerouteId: 0 + }, groups: [ { id: 123, @@ -36,12 +66,13 @@ const basicSerialisableGraph: ISerialisedGraph = { interface LitegraphFixtures { minimalGraph: LGraph - minimalSerialisableGraph: ISerialisedGraph - basicSerialisableGraph: ISerialisedGraph + minimalSerialisableGraph: SerialisableGraph + basicSerialisableGraph: SerialisableGraph + oldSchemaGraph: ISerialisedGraph } export const lgTest = test.extend({ - minimalGraph: async ({}, use) => { + minimalGraph: async ({ }, use) => { // Before each test function const serialisable = structuredClone(minimalSerialisableGraph) const lGraph = new LGraph(serialisable) @@ -53,4 +84,5 @@ export const lgTest = test.extend({ }, basicSerialisableGraph: structuredClone(basicSerialisableGraph), minimalSerialisableGraph: structuredClone(minimalSerialisableGraph), + oldSchemaGraph: structuredClone(oldSchemaGraph), })