11import type { Node } from "@xyflow/react" ;
22import { describe , expect , it , vi } from "vitest" ;
33
4+ import { NodeManager } from "@/nodeManager" ;
45import type { TaskNodeData } from "@/types/nodes" ;
56import type {
67 ComponentSpec ,
@@ -17,6 +18,8 @@ import {
1718
1819import { duplicateNodes } from "./duplicateNodes" ;
1920
21+ const createMockNodeManager = ( ) => new NodeManager ( ) ;
22+
2023// Mock utility functions
2124const mockTaskSpec : TaskSpec = {
2225 componentRef : { name : "test-component" } ,
@@ -153,8 +156,9 @@ describe("duplicateNodes", () => {
153156 } ;
154157
155158 const nodes : Node [ ] = [ ] ;
159+ const nodeManager = createMockNodeManager ( ) ;
156160
157- expect ( ( ) => duplicateNodes ( componentSpec , nodes ) ) . toThrow (
161+ expect ( ( ) => duplicateNodes ( componentSpec , nodes , nodeManager ) ) . toThrow (
158162 "ComponentSpec does not contain a graph implementation." ,
159163 ) ;
160164 } ) ;
@@ -178,7 +182,8 @@ describe("duplicateNodes", () => {
178182 y : 100 ,
179183 } ) ;
180184
181- const result = duplicateNodes ( componentSpec , [ taskNode ] ) ;
185+ const nodeManager = createMockNodeManager ( ) ;
186+ const result = duplicateNodes ( componentSpec , [ taskNode ] , nodeManager ) ;
182187
183188 expect ( result . newNodes ) . toHaveLength ( 1 ) ;
184189 expect ( result . newNodes [ 0 ] . type ) . toBe ( "task" ) ;
@@ -208,7 +213,8 @@ describe("duplicateNodes", () => {
208213
209214 const inputNode = createMockInputNode ( "original-input" , { x : 50 , y : 50 } ) ;
210215
211- const result = duplicateNodes ( componentSpec , [ inputNode ] ) ;
216+ const nodeManager = createMockNodeManager ( ) ;
217+ const result = duplicateNodes ( componentSpec , [ inputNode ] , nodeManager ) ;
212218
213219 expect ( result . newNodes ) . toHaveLength ( 1 ) ;
214220 expect ( result . newNodes [ 0 ] . type ) . toBe ( "input" ) ;
@@ -243,7 +249,8 @@ describe("duplicateNodes", () => {
243249 y : 300 ,
244250 } ) ;
245251
246- const result = duplicateNodes ( componentSpec , [ outputNode ] ) ;
252+ const nodeManager = createMockNodeManager ( ) ;
253+ const result = duplicateNodes ( componentSpec , [ outputNode ] , nodeManager ) ;
247254
248255 expect ( result . newNodes ) . toHaveLength ( 1 ) ;
249256 expect ( result . newNodes [ 0 ] . type ) . toBe ( "output" ) ;
@@ -274,7 +281,8 @@ describe("duplicateNodes", () => {
274281 createMockTaskNode ( "task2" , taskSpec2 , { x : 200 , y : 200 } ) ,
275282 ] ;
276283
277- const result = duplicateNodes ( componentSpec , nodes ) ;
284+ const nodeManager = createMockNodeManager ( ) ;
285+ const result = duplicateNodes ( componentSpec , nodes , nodeManager ) ;
278286
279287 expect ( result . newNodes ) . toHaveLength ( 2 ) ;
280288 expect ( result . newNodes . map ( ( n ) => n . id ) ) . toEqual ( [
@@ -293,7 +301,8 @@ describe("duplicateNodes", () => {
293301 const taskNode = createMockTaskNode ( "original-task" , mockTaskSpec ) ;
294302 taskNode . selected = true ;
295303
296- const result = duplicateNodes ( componentSpec , [ taskNode ] , {
304+ const nodeManager = createMockNodeManager ( ) ;
305+ const result = duplicateNodes ( componentSpec , [ taskNode ] , nodeManager , {
297306 selected : false ,
298307 } ) ;
299308
@@ -317,7 +326,8 @@ describe("duplicateNodes", () => {
317326
318327 const taskNode = createMockTaskNode ( "original-task" , taskSpecWithStatus ) ;
319328
320- const result = duplicateNodes ( componentSpec , [ taskNode ] , {
329+ const nodeManager = createMockNodeManager ( ) ;
330+ const result = duplicateNodes ( componentSpec , [ taskNode ] , nodeManager , {
321331 status : false ,
322332 } ) ;
323333
@@ -343,7 +353,8 @@ describe("duplicateNodes", () => {
343353 createMockTaskNode ( "task2" , mockTaskSpec , { x : 200 , y : 200 } ) ,
344354 ] ;
345355
346- const result = duplicateNodes ( componentSpec , nodes , {
356+ const nodeManager = createMockNodeManager ( ) ;
357+ const result = duplicateNodes ( componentSpec , nodes , nodeManager , {
347358 position : { x : 500 , y : 500 } ,
348359 } ) ;
349360
@@ -399,7 +410,8 @@ describe("duplicateNodes", () => {
399410 createMockTaskNode ( "task2" , task2 ) ,
400411 ] ;
401412
402- const result = duplicateNodes ( componentSpec , nodes , {
413+ const nodeManager = createMockNodeManager ( ) ;
414+ const result = duplicateNodes ( componentSpec , nodes , nodeManager , {
403415 connection : "none" ,
404416 } ) ;
405417
@@ -422,7 +434,8 @@ describe("duplicateNodes", () => {
422434 createMockTaskNode ( "task2" , task2 ) ,
423435 ] ;
424436
425- const result = duplicateNodes ( componentSpec , nodes , {
437+ const nodeManager = createMockNodeManager ( ) ;
438+ const result = duplicateNodes ( componentSpec , nodes , nodeManager , {
426439 connection : "internal" ,
427440 } ) ;
428441
@@ -474,7 +487,8 @@ describe("duplicateNodes", () => {
474487 createMockTaskNode ( "task2" , task2WithConnections ) ,
475488 ] ;
476489
477- const result = duplicateNodes ( componentSpec , nodes , {
490+ const nodeManager = createMockNodeManager ( ) ;
491+ const result = duplicateNodes ( componentSpec , nodes , nodeManager , {
478492 connection : "external" ,
479493 } ) ;
480494
@@ -507,7 +521,8 @@ describe("duplicateNodes", () => {
507521 createMockTaskNode ( "task2" , task2 ) ,
508522 ] ;
509523
510- const result = duplicateNodes ( componentSpec , nodes , {
524+ const nodeManager = createMockNodeManager ( ) ;
525+ const result = duplicateNodes ( componentSpec , nodes , nodeManager , {
511526 connection : "all" ,
512527 } ) ;
513528
@@ -549,7 +564,8 @@ describe("duplicateNodes", () => {
549564 createMockTaskNode ( "task1" , taskSpec ) ,
550565 ] ;
551566
552- const result = duplicateNodes ( componentSpec , nodes , {
567+ const nodeManager = createMockNodeManager ( ) ;
568+ const result = duplicateNodes ( componentSpec , nodes , nodeManager , {
553569 connection : "all" ,
554570 } ) ;
555571
@@ -586,7 +602,8 @@ describe("duplicateNodes", () => {
586602 createMockOutputNode ( "graph-output" ) ,
587603 ] ;
588604
589- const result = duplicateNodes ( componentSpec , nodes , {
605+ const nodeManager = createMockNodeManager ( ) ;
606+ const result = duplicateNodes ( componentSpec , nodes , nodeManager , {
590607 connection : "all" ,
591608 } ) ;
592609
@@ -609,7 +626,8 @@ describe("duplicateNodes", () => {
609626 describe ( "edge cases" , ( ) => {
610627 it ( "should handle empty node array" , ( ) => {
611628 const componentSpec = createMockComponentSpec ( ) ;
612- const result = duplicateNodes ( componentSpec , [ ] ) ;
629+ const nodeManager = createMockNodeManager ( ) ;
630+ const result = duplicateNodes ( componentSpec , [ ] , nodeManager ) ;
613631
614632 expect ( result . newNodes ) . toHaveLength ( 0 ) ;
615633 expect ( result . nodeIdMap ) . toEqual ( { } ) ;
@@ -623,7 +641,8 @@ describe("duplicateNodes", () => {
623641 const taskNode = createMockTaskNode ( "original-task" , mockTaskSpec ) ;
624642 taskNode . measured = { width : 300 , height : 200 } ;
625643
626- const result = duplicateNodes ( componentSpec , [ taskNode ] ) ;
644+ const nodeManager = createMockNodeManager ( ) ;
645+ const result = duplicateNodes ( componentSpec , [ taskNode ] , nodeManager ) ;
627646
628647 expect ( result . newNodes [ 0 ] . measured ) . toEqual ( { width : 300 , height : 200 } ) ;
629648 } ) ;
@@ -643,7 +662,8 @@ describe("duplicateNodes", () => {
643662 taskSpecWithoutPosition ,
644663 ) ;
645664
646- const result = duplicateNodes ( componentSpec , [ taskNode ] ) ;
665+ const nodeManager = createMockNodeManager ( ) ;
666+ const result = duplicateNodes ( componentSpec , [ taskNode ] , nodeManager ) ;
647667
648668 expect ( result . newNodes ) . toHaveLength ( 1 ) ;
649669 expect ( result . newNodes [ 0 ] . position ) . toEqual ( { x : 110 , y : 110 } ) ;
@@ -658,7 +678,8 @@ describe("duplicateNodes", () => {
658678
659679 const taskNode = createMockTaskNode ( "original-task" , mockTaskSpec ) ;
660680
661- const result = duplicateNodes ( componentSpec , [ taskNode ] ) ;
681+ const nodeManager = createMockNodeManager ( ) ;
682+ const result = duplicateNodes ( componentSpec , [ taskNode ] , nodeManager ) ;
662683
663684 expect ( result ) . toHaveProperty ( "updatedComponentSpec" ) ;
664685 expect ( result ) . toHaveProperty ( "nodeIdMap" ) ;
0 commit comments