From 64c711344093daa523e96ad8741ea41fffd8ecf2 Mon Sep 17 00:00:00 2001 From: filtered <176114999+webfiltered@users.noreply.github.com> Date: Sat, 5 Apr 2025 16:34:55 +1100 Subject: [PATCH] Fix link corruption (#888) - Adds link & floating link integrity tests to all LinkConnector integration tests - Fixes link changes may be lost when moving floating links --- src/Reroute.ts | 29 ++++++++++++++++++++++++++ src/canvas/LinkConnector.ts | 6 ++++-- test/LinkConnector.integration.test.ts | 23 ++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/Reroute.ts b/src/Reroute.ts index 17d1106de..73c691902 100644 --- a/src/Reroute.ts +++ b/src/Reroute.ts @@ -329,6 +329,35 @@ export class Reroute implements Positionable, LinkSegment, Serialisable({ } } } + + for (const link of graph._links.values()) { + expect(graph.getNodeById(link!.origin_id)?.outputs[link!.origin_slot].links).toContain(link.id) + expect(graph.getNodeById(link!.target_id)?.inputs[link!.target_slot].link).toBe(link.id) + } + + for (const link of graph.floatingLinks.values()) { + if (link.target_id === -1) { + expect(link.origin_id).not.toBe(-1) + expect(link.origin_slot).not.toBe(-1) + expect(link.target_slot).toBe(-1) + const outputFloatingLinks = graph.getNodeById(link.origin_id)?.outputs[link.origin_slot]._floatingLinks + expect(outputFloatingLinks).toBeDefined() + expect(outputFloatingLinks).toContain(link) + } else { + expect(link.origin_id).toBe(-1) + expect(link.origin_slot).toBe(-1) + expect(link.target_slot).not.toBe(-1) + const inputFloatingLinks = graph.getNodeById(link.target_id)?.inputs[link.target_slot]._floatingLinks + expect(inputFloatingLinks).toBeDefined() + expect(inputFloatingLinks).toContain(link) + } + } }) },