@fsai-flow/workflow 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/.eslintrc.json +33 -0
  2. package/README.md +11 -0
  3. package/dist/README.md +11 -0
  4. package/dist/package.json +42 -0
  5. package/dist/src/index.d.ts +21 -0
  6. package/dist/src/index.js +33 -0
  7. package/dist/src/index.js.map +1 -0
  8. package/dist/src/lib/Constants.d.ts +68 -0
  9. package/dist/src/lib/Constants.js +106 -0
  10. package/dist/src/lib/Constants.js.map +1 -0
  11. package/dist/src/lib/DeferredPromise.d.ts +6 -0
  12. package/dist/src/lib/DeferredPromise.js +11 -0
  13. package/dist/src/lib/DeferredPromise.js.map +1 -0
  14. package/dist/src/lib/Expression.d.ts +65 -0
  15. package/dist/src/lib/Expression.js +215 -0
  16. package/dist/src/lib/Expression.js.map +1 -0
  17. package/dist/src/lib/Interfaces.d.ts +1569 -0
  18. package/dist/src/lib/Interfaces.js +44 -0
  19. package/dist/src/lib/Interfaces.js.map +1 -0
  20. package/dist/src/lib/LoggerProxy.d.ts +9 -0
  21. package/dist/src/lib/LoggerProxy.js +40 -0
  22. package/dist/src/lib/LoggerProxy.js.map +1 -0
  23. package/dist/src/lib/MetadataUtils.d.ts +4 -0
  24. package/dist/src/lib/MetadataUtils.js +27 -0
  25. package/dist/src/lib/MetadataUtils.js.map +1 -0
  26. package/dist/src/lib/NodeErrors.d.ts +82 -0
  27. package/dist/src/lib/NodeErrors.js +289 -0
  28. package/dist/src/lib/NodeErrors.js.map +1 -0
  29. package/dist/src/lib/NodeHelpers.d.ts +198 -0
  30. package/dist/src/lib/NodeHelpers.js +1348 -0
  31. package/dist/src/lib/NodeHelpers.js.map +1 -0
  32. package/dist/src/lib/ObservableObject.d.ts +5 -0
  33. package/dist/src/lib/ObservableObject.js +61 -0
  34. package/dist/src/lib/ObservableObject.js.map +1 -0
  35. package/dist/src/lib/RoutingNode.d.ts +18 -0
  36. package/dist/src/lib/RoutingNode.js +508 -0
  37. package/dist/src/lib/RoutingNode.js.map +1 -0
  38. package/dist/src/lib/TelemetryHelpers.d.ts +3 -0
  39. package/dist/src/lib/TelemetryHelpers.js +69 -0
  40. package/dist/src/lib/TelemetryHelpers.js.map +1 -0
  41. package/dist/src/lib/TypeValidation.d.ts +21 -0
  42. package/dist/src/lib/TypeValidation.js +385 -0
  43. package/dist/src/lib/TypeValidation.js.map +1 -0
  44. package/dist/src/lib/VersionedNodeType.d.ts +9 -0
  45. package/dist/src/lib/VersionedNodeType.js +26 -0
  46. package/dist/src/lib/VersionedNodeType.js.map +1 -0
  47. package/dist/src/lib/Workflow.d.ts +248 -0
  48. package/dist/src/lib/Workflow.js +901 -0
  49. package/dist/src/lib/Workflow.js.map +1 -0
  50. package/dist/src/lib/WorkflowDataProxy.d.ts +87 -0
  51. package/dist/src/lib/WorkflowDataProxy.js +556 -0
  52. package/dist/src/lib/WorkflowDataProxy.js.map +1 -0
  53. package/dist/src/lib/WorkflowErrors.d.ts +9 -0
  54. package/dist/src/lib/WorkflowErrors.js +18 -0
  55. package/dist/src/lib/WorkflowErrors.js.map +1 -0
  56. package/dist/src/lib/WorkflowHooks.d.ts +11 -0
  57. package/dist/src/lib/WorkflowHooks.js +34 -0
  58. package/dist/src/lib/WorkflowHooks.js.map +1 -0
  59. package/dist/src/lib/errors/base/base.error.d.ts +30 -0
  60. package/dist/src/lib/errors/base/base.error.js +45 -0
  61. package/dist/src/lib/errors/base/base.error.js.map +1 -0
  62. package/dist/src/lib/errors/base/operational.error.d.ts +15 -0
  63. package/dist/src/lib/errors/base/operational.error.js +19 -0
  64. package/dist/src/lib/errors/base/operational.error.js.map +1 -0
  65. package/dist/src/lib/errors/error.types.d.ts +11 -0
  66. package/dist/src/lib/errors/error.types.js +3 -0
  67. package/dist/src/lib/errors/error.types.js.map +1 -0
  68. package/dist/src/lib/errors/index.d.ts +1 -0
  69. package/dist/src/lib/errors/index.js +6 -0
  70. package/dist/src/lib/errors/index.js.map +1 -0
  71. package/dist/src/lib/result.d.ts +19 -0
  72. package/dist/src/lib/result.js +36 -0
  73. package/dist/src/lib/result.js.map +1 -0
  74. package/dist/src/lib/utils.d.ts +50 -0
  75. package/dist/src/lib/utils.js +110 -0
  76. package/dist/src/lib/utils.js.map +1 -0
  77. package/eslint.config.js +19 -0
  78. package/jest.config.ts +10 -0
  79. package/package.json +40 -0
  80. package/project.json +19 -0
  81. package/src/index.ts +33 -0
  82. package/src/lib/Constants.ts +124 -0
  83. package/src/lib/DeferredPromise.ts +14 -0
  84. package/src/lib/Expression.ts +375 -0
  85. package/src/lib/Interfaces.ts +2229 -0
  86. package/src/lib/LoggerProxy.ts +43 -0
  87. package/src/lib/MetadataUtils.ts +34 -0
  88. package/src/lib/NodeErrors.ts +332 -0
  89. package/src/lib/NodeHelpers.ts +1666 -0
  90. package/src/lib/ObservableObject.ts +77 -0
  91. package/src/lib/RoutingNode.ts +862 -0
  92. package/src/lib/TelemetryHelpers.ts +86 -0
  93. package/src/lib/TypeValidation.ts +431 -0
  94. package/src/lib/VersionedNodeType.ts +30 -0
  95. package/src/lib/Workflow.ts +1266 -0
  96. package/src/lib/WorkflowDataProxy.ts +708 -0
  97. package/src/lib/WorkflowErrors.ts +18 -0
  98. package/src/lib/WorkflowHooks.ts +51 -0
  99. package/src/lib/errors/base/base.error.ts +68 -0
  100. package/src/lib/errors/base/operational.error.ts +21 -0
  101. package/src/lib/errors/error.types.ts +14 -0
  102. package/src/lib/errors/index.ts +1 -0
  103. package/src/lib/result.ts +34 -0
  104. package/src/lib/utils.ts +132 -0
  105. package/tests/Helpers.ts +667 -0
  106. package/tests/NodeHelpers.test.ts +3053 -0
  107. package/tests/ObservableObject.test.ts +171 -0
  108. package/tests/RoutingNode.test.ts +1680 -0
  109. package/tests/Workflow.test.ts +1284 -0
  110. package/tests/WorkflowDataProxy.test.ts +199 -0
  111. package/tsconfig.json +27 -0
  112. package/tsconfig.lib.json +11 -0
  113. package/tsconfig.spec.json +14 -0
@@ -0,0 +1,3053 @@
1
+ import { INodeParameters, INodeProperties, NodeHelpers } from '..';
2
+
3
+ describe('Workflow', () => {
4
+ describe('getParameterValue', () => {
5
+ const tests: Array<{
6
+ description: string;
7
+ input: {
8
+ nodePropertiesArray: INodeProperties[];
9
+ nodeValues: INodeParameters;
10
+ };
11
+ output: {
12
+ noneDisplayedFalse: {
13
+ defaultsFalse: INodeParameters;
14
+ defaultsTrue: INodeParameters;
15
+ };
16
+ noneDisplayedTrue: {
17
+ defaultsFalse: INodeParameters;
18
+ defaultsTrue: INodeParameters;
19
+ };
20
+ };
21
+ }> = [
22
+ {
23
+ description: 'simple values.',
24
+ input: {
25
+ nodePropertiesArray: [
26
+ {
27
+ name: 'string1',
28
+ displayName: 'String 1',
29
+ type: 'string',
30
+ default: '',
31
+ },
32
+ {
33
+ name: 'string2',
34
+ displayName: 'String 2',
35
+ type: 'string',
36
+ default: 'default string 2',
37
+ },
38
+ {
39
+ name: 'string3',
40
+ displayName: 'String 3',
41
+ type: 'string',
42
+ default: 'default string 3',
43
+ },
44
+ {
45
+ name: 'number1',
46
+ displayName: 'Number 1',
47
+ type: 'number',
48
+ default: 10,
49
+ },
50
+ {
51
+ name: 'number2',
52
+ displayName: 'Number 2',
53
+ type: 'number',
54
+ default: 10,
55
+ },
56
+ {
57
+ name: 'number3',
58
+ displayName: 'Number 3',
59
+ type: 'number',
60
+ default: 10,
61
+ },
62
+ {
63
+ name: 'boolean1',
64
+ displayName: 'Boolean 1',
65
+ type: 'boolean',
66
+ default: false,
67
+ },
68
+ {
69
+ name: 'boolean2',
70
+ displayName: 'Boolean 2',
71
+ type: 'boolean',
72
+ default: false,
73
+ },
74
+ {
75
+ name: 'boolean3',
76
+ displayName: 'Boolean 3',
77
+ type: 'boolean',
78
+ default: true,
79
+ },
80
+ {
81
+ name: 'boolean4',
82
+ displayName: 'Boolean 4',
83
+ type: 'boolean',
84
+ default: true,
85
+ },
86
+ {
87
+ name: 'boolean5',
88
+ displayName: 'Boolean 5',
89
+ type: 'boolean',
90
+ default: false,
91
+ },
92
+ {
93
+ name: 'boolean6',
94
+ displayName: 'Boolean 6',
95
+ type: 'boolean',
96
+ default: true,
97
+ },
98
+ ],
99
+ nodeValues: {
100
+ boolean1: true,
101
+ boolean3: false,
102
+ boolean5: false,
103
+ boolean6: true,
104
+ string1: 'different',
105
+ number1: 1,
106
+ number3: 0,
107
+ },
108
+ },
109
+ output: {
110
+ noneDisplayedFalse: {
111
+ defaultsFalse: {
112
+ boolean1: true,
113
+ boolean3: false,
114
+ string1: 'different',
115
+ number1: 1,
116
+ number3: 0,
117
+ },
118
+ defaultsTrue: {
119
+ boolean1: true,
120
+ boolean2: false,
121
+ boolean3: false,
122
+ boolean4: true,
123
+ boolean5: false,
124
+ boolean6: true,
125
+ string1: 'different',
126
+ string2: 'default string 2',
127
+ string3: 'default string 3',
128
+ number1: 1,
129
+ number2: 10,
130
+ number3: 0,
131
+ },
132
+ },
133
+ noneDisplayedTrue: {
134
+ defaultsFalse: {
135
+ boolean1: true,
136
+ boolean3: false,
137
+ string1: 'different',
138
+ number1: 1,
139
+ number3: 0,
140
+ },
141
+ defaultsTrue: {
142
+ boolean1: true,
143
+ boolean2: false,
144
+ boolean3: false,
145
+ boolean4: true,
146
+ boolean5: false,
147
+ boolean6: true,
148
+ string1: 'different',
149
+ string2: 'default string 2',
150
+ string3: 'default string 3',
151
+ number1: 1,
152
+ number2: 10,
153
+ number3: 0,
154
+ },
155
+ },
156
+ },
157
+ },
158
+ {
159
+ description:
160
+ 'simple values with displayOptions "show" (match) which is boolean. All values set.',
161
+ input: {
162
+ nodePropertiesArray: [
163
+ {
164
+ name: 'boolean1',
165
+ displayName: 'boolean1',
166
+ type: 'boolean',
167
+ default: false,
168
+ },
169
+ {
170
+ name: 'string1',
171
+ displayName: 'string1',
172
+ displayOptions: {
173
+ show: {
174
+ boolean1: [true],
175
+ },
176
+ },
177
+ type: 'string',
178
+ default: 'default string1',
179
+ },
180
+ ],
181
+ nodeValues: {
182
+ boolean1: true,
183
+ string1: 'own string1',
184
+ },
185
+ },
186
+ output: {
187
+ noneDisplayedFalse: {
188
+ defaultsFalse: {
189
+ boolean1: true,
190
+ string1: 'own string1',
191
+ },
192
+ defaultsTrue: {
193
+ boolean1: true,
194
+ string1: 'own string1',
195
+ },
196
+ },
197
+ noneDisplayedTrue: {
198
+ defaultsFalse: {
199
+ boolean1: true,
200
+ string1: 'own string1',
201
+ },
202
+ defaultsTrue: {
203
+ boolean1: true,
204
+ string1: 'own string1',
205
+ },
206
+ },
207
+ },
208
+ },
209
+ {
210
+ description:
211
+ 'simple values with displayOptions "hide" (match) which is boolean. All values set.',
212
+ input: {
213
+ nodePropertiesArray: [
214
+ {
215
+ name: 'boolean1',
216
+ displayName: 'boolean1',
217
+ type: 'boolean',
218
+ default: false,
219
+ },
220
+ {
221
+ name: 'string1',
222
+ displayName: 'string1',
223
+ displayOptions: {
224
+ hide: {
225
+ boolean1: [true],
226
+ },
227
+ },
228
+ type: 'string',
229
+ default: 'default string1',
230
+ },
231
+ ],
232
+ nodeValues: {
233
+ boolean1: true,
234
+ },
235
+ },
236
+ output: {
237
+ noneDisplayedFalse: {
238
+ defaultsFalse: {
239
+ boolean1: true,
240
+ },
241
+ defaultsTrue: {
242
+ boolean1: true,
243
+ },
244
+ },
245
+ noneDisplayedTrue: {
246
+ defaultsFalse: {
247
+ boolean1: true,
248
+ },
249
+ defaultsTrue: {
250
+ boolean1: true,
251
+ string1: 'default string1',
252
+ },
253
+ },
254
+ },
255
+ },
256
+ {
257
+ description:
258
+ 'simple values with displayOptions "show" (match) which is boolean. One values set.',
259
+ input: {
260
+ nodePropertiesArray: [
261
+ {
262
+ name: 'boolean1',
263
+ displayName: 'boolean1',
264
+ type: 'boolean',
265
+ default: false,
266
+ },
267
+ {
268
+ name: 'string1',
269
+ displayName: 'string1',
270
+ displayOptions: {
271
+ show: {
272
+ boolean1: [true],
273
+ },
274
+ },
275
+ type: 'string',
276
+ default: 'default string1',
277
+ },
278
+ ],
279
+ nodeValues: {
280
+ boolean1: true,
281
+ },
282
+ },
283
+ output: {
284
+ noneDisplayedFalse: {
285
+ defaultsFalse: {
286
+ boolean1: true,
287
+ },
288
+ defaultsTrue: {
289
+ boolean1: true,
290
+ string1: 'default string1',
291
+ },
292
+ },
293
+ noneDisplayedTrue: {
294
+ defaultsFalse: {
295
+ boolean1: true,
296
+ },
297
+ defaultsTrue: {
298
+ boolean1: true,
299
+ string1: 'default string1',
300
+ },
301
+ },
302
+ },
303
+ },
304
+ {
305
+ description: 'simple values with displayOptions "show" (match). No values set.',
306
+ input: {
307
+ nodePropertiesArray: [
308
+ {
309
+ name: 'mode',
310
+ displayName: 'mode',
311
+ type: 'string',
312
+ default: 'mode1',
313
+ },
314
+ {
315
+ name: 'string1',
316
+ displayName: 'string1',
317
+ displayOptions: {
318
+ show: {
319
+ mode: ['mode1'],
320
+ },
321
+ },
322
+ type: 'string',
323
+ default: 'default string1',
324
+ },
325
+ ],
326
+ nodeValues: {},
327
+ },
328
+ output: {
329
+ noneDisplayedFalse: {
330
+ defaultsFalse: {},
331
+ defaultsTrue: {
332
+ mode: 'mode1',
333
+ string1: 'default string1',
334
+ },
335
+ },
336
+ noneDisplayedTrue: {
337
+ defaultsFalse: {},
338
+ defaultsTrue: {
339
+ mode: 'mode1',
340
+ string1: 'default string1',
341
+ },
342
+ },
343
+ },
344
+ },
345
+ {
346
+ description:
347
+ 'simple values with displayOptions "show" (match) on two which depend on each other of which is boolean. One value should be displayed. One values set (none-default).',
348
+ input: {
349
+ nodePropertiesArray: [
350
+ {
351
+ name: 'string1',
352
+ displayName: 'string1',
353
+ type: 'string',
354
+ default: 'default string1',
355
+ },
356
+ {
357
+ name: 'boolean1',
358
+ displayName: 'boolean1',
359
+ displayOptions: {
360
+ show: {
361
+ string1: ['default string1'],
362
+ },
363
+ },
364
+ type: 'boolean',
365
+ default: false,
366
+ },
367
+ {
368
+ name: 'string2',
369
+ displayName: 'string2',
370
+ displayOptions: {
371
+ show: {
372
+ boolean1: [true],
373
+ },
374
+ },
375
+ type: 'string',
376
+ default: 'default string2',
377
+ },
378
+ ],
379
+ nodeValues: {
380
+ boolean1: true,
381
+ },
382
+ },
383
+ output: {
384
+ noneDisplayedFalse: {
385
+ defaultsFalse: {
386
+ boolean1: true,
387
+ },
388
+ defaultsTrue: {
389
+ string1: 'default string1',
390
+ boolean1: true,
391
+ string2: 'default string2',
392
+ },
393
+ },
394
+ noneDisplayedTrue: {
395
+ defaultsFalse: {
396
+ boolean1: true,
397
+ },
398
+ defaultsTrue: {
399
+ string1: 'default string1',
400
+ boolean1: true,
401
+ string2: 'default string2',
402
+ },
403
+ },
404
+ },
405
+ },
406
+ {
407
+ description:
408
+ 'simple values with displayOptions "show" (match) on two which depend on each other of which is boolean. One value should be displayed. One values set. (default)',
409
+ input: {
410
+ nodePropertiesArray: [
411
+ {
412
+ name: 'string1',
413
+ displayName: 'string1',
414
+ type: 'string',
415
+ default: 'default string1',
416
+ },
417
+ {
418
+ name: 'boolean1',
419
+ displayName: 'boolean1',
420
+ displayOptions: {
421
+ show: {
422
+ string1: ['default string1'],
423
+ },
424
+ },
425
+ type: 'boolean',
426
+ default: false,
427
+ },
428
+ {
429
+ name: 'string2',
430
+ displayName: 'string2',
431
+ displayOptions: {
432
+ show: {
433
+ boolean1: [true],
434
+ },
435
+ },
436
+ type: 'string',
437
+ default: 'default string2',
438
+ },
439
+ ],
440
+ nodeValues: {
441
+ boolean1: false,
442
+ },
443
+ },
444
+ output: {
445
+ noneDisplayedFalse: {
446
+ defaultsFalse: {},
447
+ defaultsTrue: {
448
+ string1: 'default string1',
449
+ boolean1: false,
450
+ },
451
+ },
452
+ noneDisplayedTrue: {
453
+ defaultsFalse: {},
454
+ defaultsTrue: {
455
+ string1: 'default string1',
456
+ boolean1: false,
457
+ string2: 'default string2',
458
+ },
459
+ },
460
+ },
461
+ },
462
+ {
463
+ description: 'simple values with displayOptions "show" (match). All values set.',
464
+ input: {
465
+ nodePropertiesArray: [
466
+ {
467
+ name: 'mode',
468
+ displayName: 'mode',
469
+ type: 'string',
470
+ default: 'mode1',
471
+ },
472
+ {
473
+ name: 'string1',
474
+ displayName: 'string1',
475
+ displayOptions: {
476
+ show: {
477
+ mode: ['mode1'],
478
+ },
479
+ },
480
+ type: 'string',
481
+ default: 'default string1',
482
+ },
483
+ ],
484
+ nodeValues: {
485
+ mode: 'mode1',
486
+ string1: 'default string1',
487
+ },
488
+ },
489
+ output: {
490
+ noneDisplayedFalse: {
491
+ defaultsFalse: {},
492
+ defaultsTrue: {
493
+ mode: 'mode1',
494
+ string1: 'default string1',
495
+ },
496
+ },
497
+ noneDisplayedTrue: {
498
+ defaultsFalse: {},
499
+ defaultsTrue: {
500
+ mode: 'mode1',
501
+ string1: 'default string1',
502
+ },
503
+ },
504
+ },
505
+ },
506
+ {
507
+ description: 'simple values with displayOptions "show" (no-match). No values set.',
508
+ input: {
509
+ nodePropertiesArray: [
510
+ {
511
+ name: 'mode',
512
+ displayName: 'mode',
513
+ type: 'string',
514
+ default: 'mode1',
515
+ },
516
+ {
517
+ name: 'string1',
518
+ displayName: 'string1',
519
+ displayOptions: {
520
+ show: {
521
+ mode: ['mode2'],
522
+ },
523
+ },
524
+ type: 'string',
525
+ default: 'default string1',
526
+ },
527
+ ],
528
+ nodeValues: {},
529
+ },
530
+ output: {
531
+ noneDisplayedFalse: {
532
+ defaultsFalse: {},
533
+ defaultsTrue: {
534
+ mode: 'mode1',
535
+ },
536
+ },
537
+ noneDisplayedTrue: {
538
+ defaultsFalse: {},
539
+ defaultsTrue: {
540
+ mode: 'mode1',
541
+ string1: 'default string1',
542
+ },
543
+ },
544
+ },
545
+ },
546
+ {
547
+ description: 'simple values with displayOptions "show" (no-match). All values set.',
548
+ input: {
549
+ nodePropertiesArray: [
550
+ {
551
+ name: 'mode',
552
+ displayName: 'mode',
553
+ type: 'string',
554
+ default: 'mode1',
555
+ },
556
+ {
557
+ name: 'string1',
558
+ displayName: 'string1',
559
+ displayOptions: {
560
+ show: {
561
+ mode: ['mode2'],
562
+ },
563
+ },
564
+ type: 'string',
565
+ default: 'default string1',
566
+ },
567
+ ],
568
+ nodeValues: {
569
+ mode: 'mode1',
570
+ string1: 'default string1',
571
+ },
572
+ },
573
+ output: {
574
+ noneDisplayedFalse: {
575
+ defaultsFalse: {},
576
+ defaultsTrue: {
577
+ mode: 'mode1',
578
+ },
579
+ },
580
+ noneDisplayedTrue: {
581
+ defaultsFalse: {},
582
+ defaultsTrue: {
583
+ mode: 'mode1',
584
+ string1: 'default string1',
585
+ },
586
+ },
587
+ },
588
+ },
589
+ {
590
+ description: 'complex type "fixedCollection" with "multipleValues: true". One value set.',
591
+ input: {
592
+ nodePropertiesArray: [
593
+ {
594
+ name: 'values',
595
+ displayName: 'Values',
596
+ type: 'fixedCollection',
597
+ typeOptions: {
598
+ multipleValues: true,
599
+ },
600
+ default: {},
601
+ options: [
602
+ {
603
+ name: 'boolean',
604
+ displayName: 'Boolean',
605
+ values: [
606
+ {
607
+ name: 'string1',
608
+ displayName: 'string1',
609
+ type: 'string',
610
+ default: 'default string1',
611
+ },
612
+ {
613
+ name: 'boolean1',
614
+ displayName: 'boolean1',
615
+ type: 'boolean',
616
+ default: false,
617
+ },
618
+ ],
619
+ },
620
+ {
621
+ name: 'number',
622
+ displayName: 'Number',
623
+ values: [
624
+ {
625
+ name: 'string1',
626
+ displayName: 'string1',
627
+ type: 'string',
628
+ default: 'default string1',
629
+ },
630
+ {
631
+ displayName: 'number1',
632
+ name: 'number1',
633
+ type: 'number',
634
+ default: 0,
635
+ },
636
+ ],
637
+ },
638
+ ],
639
+ },
640
+ ],
641
+ nodeValues: {
642
+ values: {
643
+ number: [
644
+ {
645
+ number1: 1,
646
+ },
647
+ ],
648
+ },
649
+ },
650
+ },
651
+ output: {
652
+ noneDisplayedFalse: {
653
+ defaultsFalse: {
654
+ values: {
655
+ number: [
656
+ {
657
+ number1: 1,
658
+ },
659
+ ],
660
+ },
661
+ },
662
+ defaultsTrue: {
663
+ values: {
664
+ number: [
665
+ {
666
+ string1: 'default string1',
667
+ number1: 1,
668
+ },
669
+ ],
670
+ },
671
+ },
672
+ },
673
+ noneDisplayedTrue: {
674
+ defaultsFalse: {
675
+ values: {
676
+ number: [
677
+ {
678
+ number1: 1,
679
+ },
680
+ ],
681
+ },
682
+ },
683
+ defaultsTrue: {
684
+ values: {
685
+ number: [
686
+ {
687
+ string1: 'default string1',
688
+ number1: 1,
689
+ },
690
+ ],
691
+ },
692
+ },
693
+ },
694
+ },
695
+ },
696
+ {
697
+ description: 'complex type "fixedCollection" with "multipleValues: false". One value set.',
698
+ input: {
699
+ nodePropertiesArray: [
700
+ {
701
+ displayName: 'Values',
702
+ name: 'values',
703
+ type: 'fixedCollection',
704
+ default: {},
705
+ options: [
706
+ {
707
+ name: 'boolean',
708
+ displayName: 'Boolean',
709
+ values: [
710
+ {
711
+ name: 'string1',
712
+ displayName: 'string1',
713
+ type: 'string',
714
+ default: 'default string1',
715
+ },
716
+ {
717
+ name: 'boolean1',
718
+ displayName: 'boolean1',
719
+ type: 'boolean',
720
+ default: false,
721
+ },
722
+ ],
723
+ },
724
+ {
725
+ name: 'number',
726
+ displayName: 'Number',
727
+ values: [
728
+ {
729
+ name: 'string1',
730
+ displayName: 'string1',
731
+ type: 'string',
732
+ default: 'default string1',
733
+ },
734
+ {
735
+ displayName: 'number1',
736
+ name: 'number1',
737
+ type: 'number',
738
+ default: 0,
739
+ },
740
+ ],
741
+ },
742
+ {
743
+ name: 'singleString',
744
+ displayName: 'Single String',
745
+ values: [
746
+ {
747
+ name: 'string1',
748
+ displayName: 'string1',
749
+ type: 'string',
750
+ default: 'default singleString1',
751
+ },
752
+ ],
753
+ },
754
+ ],
755
+ },
756
+ ],
757
+ nodeValues: {
758
+ values: {
759
+ number: {
760
+ number1: 1,
761
+ },
762
+ },
763
+ },
764
+ },
765
+ output: {
766
+ noneDisplayedFalse: {
767
+ defaultsFalse: {
768
+ values: {
769
+ number: {
770
+ number1: 1,
771
+ },
772
+ },
773
+ },
774
+ defaultsTrue: {
775
+ values: {
776
+ number: {
777
+ string1: 'default string1',
778
+ number1: 1,
779
+ },
780
+ },
781
+ },
782
+ },
783
+ noneDisplayedTrue: {
784
+ defaultsFalse: {
785
+ values: {
786
+ number: {
787
+ number1: 1,
788
+ },
789
+ },
790
+ },
791
+ defaultsTrue: {
792
+ values: {
793
+ number: {
794
+ string1: 'default string1',
795
+ number1: 1,
796
+ },
797
+ },
798
+ },
799
+ },
800
+ },
801
+ },
802
+ {
803
+ description:
804
+ 'complex type "fixedCollection" with "multipleValues: false". Two values set one single one.',
805
+ input: {
806
+ nodePropertiesArray: [
807
+ {
808
+ displayName: 'Values',
809
+ name: 'values',
810
+ type: 'fixedCollection',
811
+ default: {},
812
+ options: [
813
+ {
814
+ name: 'boolean',
815
+ displayName: 'Boolean',
816
+ values: [
817
+ {
818
+ name: 'string1',
819
+ displayName: 'string1',
820
+ type: 'string',
821
+ default: 'default string1',
822
+ },
823
+ {
824
+ name: 'boolean1',
825
+ displayName: 'boolean1',
826
+ type: 'boolean',
827
+ default: false,
828
+ },
829
+ ],
830
+ },
831
+ {
832
+ name: 'number',
833
+ displayName: 'Number',
834
+ values: [
835
+ {
836
+ name: 'string1',
837
+ displayName: 'string1',
838
+ type: 'string',
839
+ default: 'default string1',
840
+ },
841
+ {
842
+ displayName: 'number1',
843
+ name: 'number1',
844
+ type: 'number',
845
+ default: 0,
846
+ },
847
+ ],
848
+ },
849
+ {
850
+ name: 'singleString',
851
+ displayName: 'Single String',
852
+ values: [
853
+ {
854
+ name: 'string1',
855
+ displayName: 'string1',
856
+ type: 'string',
857
+ default: 'default singleString1',
858
+ },
859
+ ],
860
+ },
861
+ ],
862
+ },
863
+ ],
864
+ nodeValues: {
865
+ values: {
866
+ number: {
867
+ number1: 1,
868
+ },
869
+ singleString: {
870
+ string1: 'value1',
871
+ },
872
+ },
873
+ },
874
+ },
875
+ output: {
876
+ noneDisplayedFalse: {
877
+ defaultsFalse: {
878
+ values: {
879
+ number: {
880
+ number1: 1,
881
+ },
882
+ singleString: {
883
+ string1: 'value1',
884
+ },
885
+ },
886
+ },
887
+ defaultsTrue: {
888
+ values: {
889
+ number: {
890
+ string1: 'default string1',
891
+ number1: 1,
892
+ },
893
+ singleString: {
894
+ string1: 'value1',
895
+ },
896
+ },
897
+ },
898
+ },
899
+ noneDisplayedTrue: {
900
+ defaultsFalse: {
901
+ values: {
902
+ number: {
903
+ number1: 1,
904
+ },
905
+ singleString: {
906
+ string1: 'value1',
907
+ },
908
+ },
909
+ },
910
+ defaultsTrue: {
911
+ values: {
912
+ number: {
913
+ string1: 'default string1',
914
+ number1: 1,
915
+ },
916
+ singleString: {
917
+ string1: 'value1',
918
+ },
919
+ },
920
+ },
921
+ },
922
+ },
923
+ },
924
+ {
925
+ description:
926
+ 'complex type "fixedCollection" with "multipleValues: true" and complex type "collection" with "multipleValues: true". One value set each.',
927
+ input: {
928
+ nodePropertiesArray: [
929
+ {
930
+ displayName: 'Values',
931
+ name: 'values',
932
+ type: 'fixedCollection',
933
+ typeOptions: {
934
+ multipleValues: true,
935
+ },
936
+ description: 'The value to set.',
937
+ default: {},
938
+ options: [
939
+ {
940
+ name: 'boolean',
941
+ displayName: 'Boolean',
942
+ values: [
943
+ {
944
+ name: 'string1',
945
+ displayName: 'string1',
946
+ type: 'string',
947
+ default: 'default string1',
948
+ },
949
+ {
950
+ name: 'boolean1',
951
+ displayName: 'boolean1',
952
+ type: 'boolean',
953
+ default: false,
954
+ },
955
+ ],
956
+ },
957
+ {
958
+ name: 'number',
959
+ displayName: 'Number',
960
+ values: [
961
+ {
962
+ name: 'string1',
963
+ displayName: 'string1',
964
+ type: 'string',
965
+ default: 'default string1',
966
+ },
967
+ {
968
+ name: 'number1',
969
+ displayName: 'number1',
970
+ type: 'number',
971
+ default: 0,
972
+ },
973
+ {
974
+ name: 'collection1',
975
+ displayName: 'collection1',
976
+ type: 'collection',
977
+ typeOptions: {
978
+ multipleValues: true,
979
+ },
980
+ default: {},
981
+ options: [
982
+ {
983
+ name: 'string1',
984
+ displayName: 'string1',
985
+ type: 'string',
986
+ default: 'default string1',
987
+ },
988
+ {
989
+ name: 'string2',
990
+ displayName: 'string2',
991
+ type: 'string',
992
+ default: 'default string2',
993
+ },
994
+ ],
995
+ },
996
+ ],
997
+ },
998
+ ],
999
+ },
1000
+ ],
1001
+ nodeValues: {
1002
+ values: {
1003
+ number: [
1004
+ {
1005
+ number1: 1,
1006
+ collection1: [
1007
+ {
1008
+ string1: 'value1',
1009
+ },
1010
+ ],
1011
+ },
1012
+ ],
1013
+ },
1014
+ },
1015
+ },
1016
+ output: {
1017
+ noneDisplayedFalse: {
1018
+ defaultsFalse: {
1019
+ values: {
1020
+ number: [
1021
+ {
1022
+ number1: 1,
1023
+ collection1: [
1024
+ {
1025
+ string1: 'value1',
1026
+ },
1027
+ ],
1028
+ },
1029
+ ],
1030
+ },
1031
+ },
1032
+ defaultsTrue: {
1033
+ values: {
1034
+ number: [
1035
+ {
1036
+ string1: 'default string1',
1037
+ number1: 1,
1038
+ collection1: [
1039
+ {
1040
+ string1: 'value1',
1041
+ },
1042
+ ],
1043
+ },
1044
+ ],
1045
+ },
1046
+ },
1047
+ },
1048
+ noneDisplayedTrue: {
1049
+ defaultsFalse: {
1050
+ values: {
1051
+ number: [
1052
+ {
1053
+ number1: 1,
1054
+ collection1: [
1055
+ {
1056
+ string1: 'value1',
1057
+ },
1058
+ ],
1059
+ },
1060
+ ],
1061
+ },
1062
+ },
1063
+ defaultsTrue: {
1064
+ values: {
1065
+ number: [
1066
+ {
1067
+ string1: 'default string1',
1068
+ number1: 1,
1069
+ collection1: [
1070
+ {
1071
+ string1: 'value1',
1072
+ },
1073
+ ],
1074
+ },
1075
+ ],
1076
+ },
1077
+ },
1078
+ },
1079
+ },
1080
+ },
1081
+ {
1082
+ description:
1083
+ 'complex type "fixedCollection" with "multipleValues: false" and with displayOptions "show" (match) on option. One value set.',
1084
+ input: {
1085
+ nodePropertiesArray: [
1086
+ {
1087
+ name: 'values',
1088
+ displayName: 'Values',
1089
+ type: 'fixedCollection',
1090
+ default: {},
1091
+ options: [
1092
+ {
1093
+ name: 'number',
1094
+ displayName: 'Number',
1095
+ values: [
1096
+ {
1097
+ name: 'mode',
1098
+ displayName: 'mode',
1099
+ type: 'string',
1100
+ default: 'mode1',
1101
+ },
1102
+ {
1103
+ name: 'string1',
1104
+ displayName: 'string1',
1105
+ type: 'string',
1106
+ displayOptions: {
1107
+ show: {
1108
+ mode: ['mode1'],
1109
+ },
1110
+ },
1111
+ default: 'default string1',
1112
+ },
1113
+ {
1114
+ name: 'number1',
1115
+ displayName: 'number1',
1116
+ type: 'number',
1117
+ default: 0,
1118
+ },
1119
+ ],
1120
+ },
1121
+ ],
1122
+ },
1123
+ ],
1124
+ nodeValues: {
1125
+ values: {
1126
+ number: {
1127
+ number1: 1,
1128
+ },
1129
+ },
1130
+ },
1131
+ },
1132
+ output: {
1133
+ noneDisplayedFalse: {
1134
+ defaultsFalse: {
1135
+ values: {
1136
+ number: {
1137
+ number1: 1,
1138
+ },
1139
+ },
1140
+ },
1141
+ defaultsTrue: {
1142
+ values: {
1143
+ number: {
1144
+ mode: 'mode1',
1145
+ string1: 'default string1',
1146
+ number1: 1,
1147
+ },
1148
+ },
1149
+ },
1150
+ },
1151
+ noneDisplayedTrue: {
1152
+ defaultsFalse: {
1153
+ values: {
1154
+ number: {
1155
+ number1: 1,
1156
+ },
1157
+ },
1158
+ },
1159
+ defaultsTrue: {
1160
+ values: {
1161
+ number: {
1162
+ mode: 'mode1',
1163
+ string1: 'default string1',
1164
+ number1: 1,
1165
+ },
1166
+ },
1167
+ },
1168
+ },
1169
+ },
1170
+ },
1171
+ {
1172
+ description:
1173
+ 'complex type "fixedCollection" with "multipleValues: false" and with displayOptions "show" (match) on option which references root-value. One value set.',
1174
+ input: {
1175
+ nodePropertiesArray: [
1176
+ {
1177
+ name: 'mode',
1178
+ displayName: 'mode',
1179
+ type: 'string',
1180
+ default: 'mode1',
1181
+ },
1182
+ {
1183
+ name: 'values',
1184
+ displayName: 'Values',
1185
+ type: 'fixedCollection',
1186
+ default: {},
1187
+ options: [
1188
+ {
1189
+ name: 'number',
1190
+ displayName: 'Number',
1191
+ values: [
1192
+ {
1193
+ name: 'string1',
1194
+ displayName: 'string1',
1195
+ type: 'string',
1196
+ displayOptions: {
1197
+ show: {
1198
+ '/mode': ['mode1'],
1199
+ },
1200
+ },
1201
+ default: 'default string1',
1202
+ },
1203
+ {
1204
+ name: 'number1',
1205
+ displayName: 'number1',
1206
+ type: 'number',
1207
+ default: 0,
1208
+ },
1209
+ ],
1210
+ },
1211
+ ],
1212
+ },
1213
+ ],
1214
+ nodeValues: {
1215
+ values: {
1216
+ number: {
1217
+ string1: 'own string1',
1218
+ },
1219
+ },
1220
+ },
1221
+ },
1222
+ output: {
1223
+ noneDisplayedFalse: {
1224
+ defaultsFalse: {
1225
+ values: {
1226
+ number: {
1227
+ string1: 'own string1',
1228
+ },
1229
+ },
1230
+ },
1231
+ defaultsTrue: {
1232
+ mode: 'mode1',
1233
+ values: {
1234
+ number: {
1235
+ string1: 'own string1',
1236
+ number1: 0,
1237
+ },
1238
+ },
1239
+ },
1240
+ },
1241
+ noneDisplayedTrue: {
1242
+ defaultsFalse: {
1243
+ values: {
1244
+ number: {
1245
+ string1: 'own string1',
1246
+ },
1247
+ },
1248
+ },
1249
+ defaultsTrue: {
1250
+ mode: 'mode1',
1251
+ values: {
1252
+ number: {
1253
+ string1: 'own string1',
1254
+ number1: 0,
1255
+ },
1256
+ },
1257
+ },
1258
+ },
1259
+ },
1260
+ },
1261
+ {
1262
+ description:
1263
+ 'complex type "fixedCollection" with "multipleValues: false" and with displayOptions "show" (no-match) on option which references root-value. One value set.',
1264
+ input: {
1265
+ nodePropertiesArray: [
1266
+ {
1267
+ name: 'mode',
1268
+ displayName: 'mode',
1269
+ type: 'string',
1270
+ default: 'mode1',
1271
+ },
1272
+ {
1273
+ name: 'values',
1274
+ displayName: 'Values',
1275
+ type: 'fixedCollection',
1276
+ default: {},
1277
+ options: [
1278
+ {
1279
+ name: 'number',
1280
+ displayName: 'Number',
1281
+ values: [
1282
+ {
1283
+ name: 'string1',
1284
+ displayName: 'string1',
1285
+ type: 'string',
1286
+ displayOptions: {
1287
+ show: {
1288
+ '/mode': ['mode2'],
1289
+ },
1290
+ },
1291
+ default: 'default string1',
1292
+ },
1293
+ {
1294
+ name: 'number1',
1295
+ displayName: 'number1',
1296
+ type: 'number',
1297
+ default: 0,
1298
+ },
1299
+ ],
1300
+ },
1301
+ ],
1302
+ },
1303
+ ],
1304
+ nodeValues: {
1305
+ values: {
1306
+ number: {
1307
+ string1: 'own string1',
1308
+ },
1309
+ },
1310
+ },
1311
+ },
1312
+ output: {
1313
+ noneDisplayedFalse: {
1314
+ defaultsFalse: {},
1315
+ defaultsTrue: {
1316
+ mode: 'mode1',
1317
+ values: {
1318
+ number: {
1319
+ number1: 0,
1320
+ },
1321
+ },
1322
+ },
1323
+ },
1324
+ noneDisplayedTrue: {
1325
+ defaultsFalse: {
1326
+ values: {
1327
+ number: {
1328
+ string1: 'own string1',
1329
+ },
1330
+ },
1331
+ },
1332
+ defaultsTrue: {
1333
+ mode: 'mode1',
1334
+ values: {
1335
+ number: {
1336
+ string1: 'own string1',
1337
+ number1: 0,
1338
+ },
1339
+ },
1340
+ },
1341
+ },
1342
+ },
1343
+ },
1344
+ // Remember it is correct that default strings get returned here even when returnDefaults
1345
+ // is set to false because if they would not, there would be no way to know which value
1346
+ // got added and which one not.
1347
+ {
1348
+ description:
1349
+ 'complex type "collection" with "multipleValues: false" and with displayOptions "show" (match) on option which references root-value. One value set.',
1350
+ input: {
1351
+ nodePropertiesArray: [
1352
+ {
1353
+ name: 'mode',
1354
+ displayName: 'mode',
1355
+ type: 'string',
1356
+ default: 'mode1',
1357
+ },
1358
+ {
1359
+ name: 'values',
1360
+ displayName: 'Values',
1361
+ type: 'collection',
1362
+ default: {},
1363
+ options: [
1364
+ {
1365
+ name: 'string1',
1366
+ displayName: 'string1',
1367
+ type: 'string',
1368
+ displayOptions: {
1369
+ show: {
1370
+ '/mode': ['mode1'],
1371
+ },
1372
+ },
1373
+ default: 'default string1',
1374
+ },
1375
+ {
1376
+ name: 'number1',
1377
+ displayName: 'number1',
1378
+ type: 'number',
1379
+ default: 0,
1380
+ },
1381
+ ],
1382
+ },
1383
+ ],
1384
+ nodeValues: {
1385
+ values: {
1386
+ string1: 'own string1',
1387
+ },
1388
+ },
1389
+ },
1390
+ output: {
1391
+ noneDisplayedFalse: {
1392
+ defaultsFalse: {
1393
+ values: {
1394
+ string1: 'own string1',
1395
+ },
1396
+ },
1397
+ defaultsTrue: {
1398
+ mode: 'mode1',
1399
+ values: {
1400
+ string1: 'own string1',
1401
+ },
1402
+ },
1403
+ },
1404
+ noneDisplayedTrue: {
1405
+ defaultsFalse: {
1406
+ values: {
1407
+ string1: 'own string1',
1408
+ },
1409
+ },
1410
+ defaultsTrue: {
1411
+ mode: 'mode1',
1412
+ values: {
1413
+ string1: 'own string1',
1414
+ },
1415
+ },
1416
+ },
1417
+ },
1418
+ },
1419
+ // Remember it is correct that default strings get returned here even when returnDefaults
1420
+ // is set to false because if they would not, there would be no way to know which value
1421
+ // got added and which one not.
1422
+ {
1423
+ description:
1424
+ 'complex type "collection" with "multipleValues: false" and with displayOptions "show" (no-match) on option which references root-value. One value set.',
1425
+ input: {
1426
+ nodePropertiesArray: [
1427
+ {
1428
+ name: 'mode',
1429
+ displayName: 'mode',
1430
+ type: 'string',
1431
+ default: 'mode1',
1432
+ },
1433
+ {
1434
+ name: 'values',
1435
+ displayName: 'Values',
1436
+ type: 'collection',
1437
+ default: {},
1438
+ options: [
1439
+ {
1440
+ name: 'string1',
1441
+ displayName: 'string1',
1442
+ type: 'string',
1443
+ displayOptions: {
1444
+ show: {
1445
+ '/mode': ['mode2'],
1446
+ },
1447
+ },
1448
+ default: 'default string1',
1449
+ },
1450
+ {
1451
+ name: 'number1',
1452
+ displayName: 'number1',
1453
+ type: 'number',
1454
+ default: 0,
1455
+ },
1456
+ ],
1457
+ },
1458
+ ],
1459
+ nodeValues: {
1460
+ values: {
1461
+ string1: 'own string1',
1462
+ },
1463
+ },
1464
+ },
1465
+ output: {
1466
+ noneDisplayedFalse: {
1467
+ defaultsFalse: {
1468
+ // TODO: Write some code which cleans up data like that
1469
+ values: {},
1470
+ },
1471
+ defaultsTrue: {
1472
+ mode: 'mode1',
1473
+ values: {},
1474
+ },
1475
+ },
1476
+ noneDisplayedTrue: {
1477
+ defaultsFalse: {
1478
+ values: {
1479
+ string1: 'own string1',
1480
+ },
1481
+ },
1482
+ defaultsTrue: {
1483
+ mode: 'mode1',
1484
+ values: {
1485
+ string1: 'own string1',
1486
+ },
1487
+ },
1488
+ },
1489
+ },
1490
+ },
1491
+ // Remember it is correct that default strings get returned here even when returnDefaults
1492
+ // is set to false because if they would not, there would be no way to know which value
1493
+ // got added and which one not.
1494
+ {
1495
+ description:
1496
+ 'complex type "collection" with "multipleValues: true" and with displayOptions "show" (match) on option which references root-value. One value set.',
1497
+ input: {
1498
+ nodePropertiesArray: [
1499
+ {
1500
+ name: 'mode',
1501
+ displayName: 'mode',
1502
+ type: 'string',
1503
+ default: 'mode1',
1504
+ },
1505
+ {
1506
+ name: 'values',
1507
+ displayName: 'Values',
1508
+ type: 'collection',
1509
+ typeOptions: {
1510
+ multipleValues: true,
1511
+ },
1512
+ default: {},
1513
+ options: [
1514
+ {
1515
+ name: 'string1',
1516
+ displayName: 'string1',
1517
+ type: 'string',
1518
+ displayOptions: {
1519
+ show: {
1520
+ '/mode': ['mode1'],
1521
+ },
1522
+ },
1523
+ default: 'default string1',
1524
+ },
1525
+ {
1526
+ name: 'number1',
1527
+ displayName: 'number1',
1528
+ type: 'number',
1529
+ default: 0,
1530
+ },
1531
+ ],
1532
+ },
1533
+ ],
1534
+ nodeValues: {
1535
+ values: [
1536
+ {
1537
+ string1: 'own string1',
1538
+ },
1539
+ ],
1540
+ },
1541
+ },
1542
+ output: {
1543
+ noneDisplayedFalse: {
1544
+ defaultsFalse: {
1545
+ values: [
1546
+ {
1547
+ string1: 'own string1',
1548
+ },
1549
+ ],
1550
+ },
1551
+ defaultsTrue: {
1552
+ mode: 'mode1',
1553
+ values: [
1554
+ {
1555
+ string1: 'own string1',
1556
+ },
1557
+ ],
1558
+ },
1559
+ },
1560
+ noneDisplayedTrue: {
1561
+ defaultsFalse: {
1562
+ values: [
1563
+ {
1564
+ string1: 'own string1',
1565
+ },
1566
+ ],
1567
+ },
1568
+ defaultsTrue: {
1569
+ mode: 'mode1',
1570
+ values: [
1571
+ {
1572
+ string1: 'own string1',
1573
+ },
1574
+ ],
1575
+ },
1576
+ },
1577
+ },
1578
+ },
1579
+
1580
+ // Remember it is correct that default strings get returned here even when returnDefaults
1581
+ // is set to false because if they would not, there would be no way to know which value
1582
+ // got added and which one not.
1583
+ {
1584
+ description:
1585
+ 'complex type "collection" with "multipleValues: true" and with displayOptions "show" (no-match) on option which references root-value. One value set.',
1586
+ input: {
1587
+ nodePropertiesArray: [
1588
+ {
1589
+ name: 'mode',
1590
+ displayName: 'mode',
1591
+ type: 'string',
1592
+ default: 'mode1',
1593
+ },
1594
+ {
1595
+ name: 'values',
1596
+ displayName: 'Values',
1597
+ type: 'collection',
1598
+ typeOptions: {
1599
+ multipleValues: true,
1600
+ },
1601
+ default: {},
1602
+ options: [
1603
+ {
1604
+ name: 'string1',
1605
+ displayName: 'string1',
1606
+ type: 'string',
1607
+ displayOptions: {
1608
+ show: {
1609
+ '/mode': ['mode2'],
1610
+ },
1611
+ },
1612
+ default: 'default string1',
1613
+ },
1614
+ {
1615
+ name: 'number1',
1616
+ displayName: 'number1',
1617
+ type: 'number',
1618
+ default: 0,
1619
+ },
1620
+ ],
1621
+ },
1622
+ ],
1623
+ nodeValues: {
1624
+ values: [
1625
+ {
1626
+ string1: 'own string1',
1627
+ number1: 0,
1628
+ },
1629
+ ],
1630
+ },
1631
+ },
1632
+ output: {
1633
+ noneDisplayedFalse: {
1634
+ defaultsFalse: {
1635
+ values: [
1636
+ {
1637
+ string1: 'own string1',
1638
+ number1: 0,
1639
+ },
1640
+ ],
1641
+ },
1642
+ defaultsTrue: {
1643
+ mode: 'mode1',
1644
+ values: [
1645
+ {
1646
+ string1: 'own string1',
1647
+ number1: 0,
1648
+ },
1649
+ ],
1650
+ },
1651
+ },
1652
+ noneDisplayedTrue: {
1653
+ defaultsFalse: {
1654
+ values: [
1655
+ {
1656
+ string1: 'own string1',
1657
+ number1: 0,
1658
+ },
1659
+ ],
1660
+ },
1661
+ defaultsTrue: {
1662
+ mode: 'mode1',
1663
+ values: [
1664
+ {
1665
+ string1: 'own string1',
1666
+ number1: 0,
1667
+ },
1668
+ ],
1669
+ },
1670
+ },
1671
+ },
1672
+ },
1673
+ {
1674
+ description:
1675
+ 'complex type "fixedCollection" with "multipleValues: false" and with displayOptions "show" (no-match) on option. One value set also the not displayed one.',
1676
+ input: {
1677
+ nodePropertiesArray: [
1678
+ {
1679
+ name: 'values',
1680
+ displayName: 'Values',
1681
+ type: 'fixedCollection',
1682
+ default: {},
1683
+ options: [
1684
+ {
1685
+ name: 'number',
1686
+ displayName: 'Number',
1687
+ values: [
1688
+ {
1689
+ name: 'mode',
1690
+ displayName: 'mode',
1691
+ type: 'string',
1692
+ default: 'mode1',
1693
+ },
1694
+ {
1695
+ displayName: 'string1',
1696
+ name: 'string1',
1697
+ type: 'string',
1698
+ displayOptions: {
1699
+ show: {
1700
+ mode: ['mode1'],
1701
+ },
1702
+ },
1703
+ default: 'default string1',
1704
+ },
1705
+ {
1706
+ displayName: 'number1',
1707
+ name: 'number1',
1708
+ type: 'number',
1709
+ default: 0,
1710
+ },
1711
+ ],
1712
+ },
1713
+ ],
1714
+ },
1715
+ ],
1716
+ nodeValues: {
1717
+ values: {
1718
+ number: {
1719
+ mode: 'mode2',
1720
+ string1: 'default string1',
1721
+ number1: 1,
1722
+ },
1723
+ },
1724
+ },
1725
+ },
1726
+ output: {
1727
+ noneDisplayedFalse: {
1728
+ defaultsFalse: {
1729
+ values: {
1730
+ number: {
1731
+ mode: 'mode2',
1732
+ number1: 1,
1733
+ },
1734
+ },
1735
+ },
1736
+ defaultsTrue: {
1737
+ values: {
1738
+ number: {
1739
+ mode: 'mode2',
1740
+ number1: 1,
1741
+ },
1742
+ },
1743
+ },
1744
+ },
1745
+ noneDisplayedTrue: {
1746
+ defaultsFalse: {
1747
+ values: {
1748
+ number: {
1749
+ mode: 'mode2',
1750
+ number1: 1,
1751
+ },
1752
+ },
1753
+ },
1754
+ defaultsTrue: {
1755
+ values: {
1756
+ number: {
1757
+ mode: 'mode2',
1758
+ string1: 'default string1',
1759
+ number1: 1,
1760
+ },
1761
+ },
1762
+ },
1763
+ },
1764
+ },
1765
+ },
1766
+ {
1767
+ description:
1768
+ 'complex type "collection" with "multipleValues: true". One none-default value set.',
1769
+ input: {
1770
+ nodePropertiesArray: [
1771
+ {
1772
+ displayName: 'collection1',
1773
+ name: 'collection1',
1774
+ type: 'collection',
1775
+ typeOptions: {
1776
+ multipleValues: true,
1777
+ },
1778
+ default: {},
1779
+ options: [
1780
+ {
1781
+ displayName: 'string1',
1782
+ name: 'string1',
1783
+ type: 'string',
1784
+ default: 'default string1',
1785
+ },
1786
+ {
1787
+ displayName: 'string2',
1788
+ name: 'string2',
1789
+ type: 'string',
1790
+ default: 'default string2',
1791
+ },
1792
+ ],
1793
+ },
1794
+ ],
1795
+ nodeValues: {
1796
+ collection1: [
1797
+ {
1798
+ string1: 'value1',
1799
+ },
1800
+ ],
1801
+ },
1802
+ },
1803
+ output: {
1804
+ noneDisplayedFalse: {
1805
+ defaultsFalse: {
1806
+ collection1: [
1807
+ {
1808
+ string1: 'value1',
1809
+ },
1810
+ ],
1811
+ },
1812
+ defaultsTrue: {
1813
+ collection1: [
1814
+ {
1815
+ string1: 'value1',
1816
+ },
1817
+ ],
1818
+ },
1819
+ },
1820
+ noneDisplayedTrue: {
1821
+ defaultsFalse: {
1822
+ collection1: [
1823
+ {
1824
+ string1: 'value1',
1825
+ },
1826
+ ],
1827
+ },
1828
+ defaultsTrue: {
1829
+ collection1: [
1830
+ {
1831
+ string1: 'value1',
1832
+ },
1833
+ ],
1834
+ },
1835
+ },
1836
+ },
1837
+ },
1838
+ // Remember it is correct that default strings get returned here even when returnDefaults
1839
+ // is set to false because if they would not, there would be no way to know which value
1840
+ // got added and which one not.
1841
+ {
1842
+ description:
1843
+ 'complex type "collection" with "multipleValues: true". One default value set.',
1844
+ input: {
1845
+ nodePropertiesArray: [
1846
+ {
1847
+ displayName: 'collection1',
1848
+ name: 'collection1',
1849
+ type: 'collection',
1850
+ typeOptions: {
1851
+ multipleValues: true,
1852
+ },
1853
+ default: {},
1854
+ options: [
1855
+ {
1856
+ displayName: 'string1',
1857
+ name: 'string1',
1858
+ type: 'string',
1859
+ default: 'default string1',
1860
+ },
1861
+ {
1862
+ displayName: 'string2',
1863
+ name: 'string2',
1864
+ type: 'string',
1865
+ default: 'default string2',
1866
+ },
1867
+ ],
1868
+ },
1869
+ ],
1870
+ nodeValues: {
1871
+ collection1: [
1872
+ {
1873
+ string1: 'default string1',
1874
+ },
1875
+ ],
1876
+ },
1877
+ },
1878
+ output: {
1879
+ noneDisplayedFalse: {
1880
+ defaultsFalse: {
1881
+ collection1: [
1882
+ {
1883
+ string1: 'default string1',
1884
+ },
1885
+ ],
1886
+ },
1887
+ defaultsTrue: {
1888
+ collection1: [
1889
+ {
1890
+ string1: 'default string1',
1891
+ },
1892
+ ],
1893
+ },
1894
+ },
1895
+ noneDisplayedTrue: {
1896
+ defaultsFalse: {
1897
+ collection1: [
1898
+ {
1899
+ string1: 'default string1',
1900
+ },
1901
+ ],
1902
+ },
1903
+ defaultsTrue: {
1904
+ collection1: [
1905
+ {
1906
+ string1: 'default string1',
1907
+ },
1908
+ ],
1909
+ },
1910
+ },
1911
+ },
1912
+ },
1913
+ {
1914
+ description:
1915
+ 'complex type "collection" with "multipleValues: false". One none-default value set.',
1916
+ input: {
1917
+ nodePropertiesArray: [
1918
+ {
1919
+ displayName: 'collection1',
1920
+ name: 'collection1',
1921
+ type: 'collection',
1922
+ default: {},
1923
+ options: [
1924
+ {
1925
+ displayName: 'string1',
1926
+ name: 'string1',
1927
+ type: 'string',
1928
+ default: 'default string1',
1929
+ },
1930
+ {
1931
+ displayName: 'string2',
1932
+ name: 'string2',
1933
+ type: 'string',
1934
+ default: 'default string2',
1935
+ },
1936
+ ],
1937
+ },
1938
+ ],
1939
+ nodeValues: {
1940
+ collection1: {
1941
+ string1: 'own string1',
1942
+ },
1943
+ },
1944
+ },
1945
+ output: {
1946
+ noneDisplayedFalse: {
1947
+ defaultsFalse: {
1948
+ collection1: {
1949
+ string1: 'own string1',
1950
+ },
1951
+ },
1952
+ defaultsTrue: {
1953
+ collection1: {
1954
+ string1: 'own string1',
1955
+ },
1956
+ },
1957
+ },
1958
+ noneDisplayedTrue: {
1959
+ defaultsFalse: {
1960
+ collection1: {
1961
+ string1: 'own string1',
1962
+ },
1963
+ },
1964
+ defaultsTrue: {
1965
+ collection1: {
1966
+ string1: 'own string1',
1967
+ },
1968
+ },
1969
+ },
1970
+ },
1971
+ },
1972
+ {
1973
+ description:
1974
+ 'complex type "collection" with "multipleValues: false". One default value set.',
1975
+ input: {
1976
+ nodePropertiesArray: [
1977
+ {
1978
+ displayName: 'collection1',
1979
+ name: 'collection1',
1980
+ type: 'collection',
1981
+ default: {},
1982
+ options: [
1983
+ {
1984
+ displayName: 'string1',
1985
+ name: 'string1',
1986
+ type: 'string',
1987
+ default: 'default string1',
1988
+ },
1989
+ {
1990
+ displayName: 'string2',
1991
+ name: 'string2',
1992
+ type: 'string',
1993
+ default: 'default string2',
1994
+ },
1995
+ ],
1996
+ },
1997
+ ],
1998
+ nodeValues: {
1999
+ collection1: {
2000
+ string1: 'default string1',
2001
+ },
2002
+ },
2003
+ },
2004
+ output: {
2005
+ noneDisplayedFalse: {
2006
+ defaultsFalse: {
2007
+ collection1: {
2008
+ string1: 'default string1',
2009
+ },
2010
+ },
2011
+ defaultsTrue: {
2012
+ collection1: {
2013
+ string1: 'default string1',
2014
+ },
2015
+ },
2016
+ },
2017
+ noneDisplayedTrue: {
2018
+ defaultsFalse: {
2019
+ collection1: {
2020
+ string1: 'default string1',
2021
+ },
2022
+ },
2023
+ defaultsTrue: {
2024
+ collection1: {
2025
+ string1: 'default string1',
2026
+ },
2027
+ },
2028
+ },
2029
+ },
2030
+ },
2031
+ {
2032
+ description:
2033
+ 'complex type "collection" with "multipleValues: false". Only outer value set.',
2034
+ input: {
2035
+ nodePropertiesArray: [
2036
+ {
2037
+ displayName: 'collection1',
2038
+ name: 'collection1',
2039
+ type: 'collection',
2040
+ default: {},
2041
+ options: [
2042
+ {
2043
+ displayName: 'string1',
2044
+ name: 'string1',
2045
+ type: 'string',
2046
+ default: 'default string1',
2047
+ },
2048
+ {
2049
+ displayName: 'string2',
2050
+ name: 'string2',
2051
+ type: 'string',
2052
+ default: 'default string2',
2053
+ },
2054
+ ],
2055
+ },
2056
+ ],
2057
+ nodeValues: {
2058
+ collection1: {},
2059
+ },
2060
+ },
2061
+ output: {
2062
+ noneDisplayedFalse: {
2063
+ defaultsFalse: {
2064
+ collection1: {},
2065
+ },
2066
+ defaultsTrue: {
2067
+ collection1: {},
2068
+ },
2069
+ },
2070
+ noneDisplayedTrue: {
2071
+ defaultsFalse: {
2072
+ collection1: {},
2073
+ },
2074
+ defaultsTrue: {
2075
+ collection1: {},
2076
+ },
2077
+ },
2078
+ },
2079
+ },
2080
+ {
2081
+ description: 'complex type "collection" with "multipleValues: false". No value set at all.',
2082
+ input: {
2083
+ nodePropertiesArray: [
2084
+ {
2085
+ displayName: 'collection1',
2086
+ name: 'collection1',
2087
+ type: 'collection',
2088
+ default: {},
2089
+ options: [
2090
+ {
2091
+ displayName: 'string1',
2092
+ name: 'string1',
2093
+ type: 'string',
2094
+ default: 'default string1',
2095
+ },
2096
+ {
2097
+ displayName: 'string2',
2098
+ name: 'string2',
2099
+ type: 'string',
2100
+ default: 'default string2',
2101
+ },
2102
+ ],
2103
+ },
2104
+ ],
2105
+ nodeValues: {},
2106
+ },
2107
+ output: {
2108
+ noneDisplayedFalse: {
2109
+ defaultsFalse: {},
2110
+ defaultsTrue: {
2111
+ collection1: {},
2112
+ },
2113
+ },
2114
+ noneDisplayedTrue: {
2115
+ defaultsFalse: {},
2116
+ defaultsTrue: {
2117
+ collection1: {},
2118
+ },
2119
+ },
2120
+ },
2121
+ },
2122
+ {
2123
+ description: 'complex type "collection" with "multipleValues: true". No value set at all.',
2124
+ input: {
2125
+ nodePropertiesArray: [
2126
+ {
2127
+ displayName: 'collection1',
2128
+ name: 'collection1',
2129
+ type: 'collection',
2130
+ typeOptions: {
2131
+ multipleValues: true,
2132
+ },
2133
+ default: [],
2134
+ options: [
2135
+ {
2136
+ displayName: 'string1',
2137
+ name: 'string1',
2138
+ type: 'string',
2139
+ default: 'default string1',
2140
+ },
2141
+ {
2142
+ displayName: 'string2',
2143
+ name: 'string2',
2144
+ type: 'string',
2145
+ default: 'default string2',
2146
+ },
2147
+ ],
2148
+ },
2149
+ ],
2150
+ nodeValues: {},
2151
+ },
2152
+ output: {
2153
+ noneDisplayedFalse: {
2154
+ defaultsFalse: {},
2155
+ defaultsTrue: {
2156
+ collection1: [],
2157
+ },
2158
+ },
2159
+ noneDisplayedTrue: {
2160
+ defaultsFalse: {},
2161
+ defaultsTrue: {
2162
+ collection1: [],
2163
+ },
2164
+ },
2165
+ },
2166
+ },
2167
+ {
2168
+ description:
2169
+ 'two identically named properties of which only one gets displayed with different options. No value set at all.',
2170
+ input: {
2171
+ nodePropertiesArray: [
2172
+ {
2173
+ displayName: 'mainOption',
2174
+ name: 'mainOption',
2175
+ type: 'options',
2176
+ options: [
2177
+ {
2178
+ name: 'option1',
2179
+ value: 'option1',
2180
+ },
2181
+ {
2182
+ name: 'option2',
2183
+ value: 'option2',
2184
+ },
2185
+ ],
2186
+ default: 'option1',
2187
+ },
2188
+ {
2189
+ displayName: 'subOption',
2190
+ name: 'subOption',
2191
+ type: 'options',
2192
+ displayOptions: {
2193
+ show: {
2194
+ mainOption: ['option1'],
2195
+ },
2196
+ },
2197
+ options: [
2198
+ {
2199
+ name: 'option1a',
2200
+ value: 'option1a',
2201
+ },
2202
+ {
2203
+ name: 'option1b',
2204
+ value: 'option1b',
2205
+ },
2206
+ ],
2207
+ default: 'option1a',
2208
+ },
2209
+ {
2210
+ displayName: 'subOption',
2211
+ name: 'subOption',
2212
+ type: 'options',
2213
+ displayOptions: {
2214
+ show: {
2215
+ mainOption: ['option2'],
2216
+ },
2217
+ },
2218
+ options: [
2219
+ {
2220
+ name: 'option2a',
2221
+ value: 'option2a',
2222
+ },
2223
+ {
2224
+ name: 'option2b',
2225
+ value: 'option2b',
2226
+ },
2227
+ ],
2228
+ default: 'option2a',
2229
+ },
2230
+ ],
2231
+ nodeValues: {},
2232
+ },
2233
+ output: {
2234
+ noneDisplayedFalse: {
2235
+ defaultsFalse: {},
2236
+ defaultsTrue: {
2237
+ mainOption: 'option1',
2238
+ subOption: 'option1a',
2239
+ },
2240
+ },
2241
+ noneDisplayedTrue: {
2242
+ defaultsFalse: {},
2243
+ defaultsTrue: {
2244
+ mainOption: 'option1',
2245
+ subOption: 'option1a',
2246
+ },
2247
+ },
2248
+ },
2249
+ },
2250
+ {
2251
+ description:
2252
+ 'One property which is dependeny on two identically named properties of which only one gets displayed with different options. No value set at all.',
2253
+ input: {
2254
+ nodePropertiesArray: [
2255
+ {
2256
+ displayName: 'mainOption',
2257
+ name: 'mainOption',
2258
+ type: 'options',
2259
+ options: [
2260
+ {
2261
+ name: 'option1',
2262
+ value: 'option1',
2263
+ },
2264
+ {
2265
+ name: 'option2',
2266
+ value: 'option2',
2267
+ },
2268
+ ],
2269
+ default: 'option1',
2270
+ },
2271
+ {
2272
+ displayName: 'subOption',
2273
+ name: 'subOption',
2274
+ type: 'options',
2275
+ displayOptions: {
2276
+ show: {
2277
+ mainOption: ['option1'],
2278
+ },
2279
+ },
2280
+ options: [
2281
+ {
2282
+ name: 'option1a',
2283
+ value: 'option1a',
2284
+ },
2285
+ {
2286
+ name: 'option1b',
2287
+ value: 'option1b',
2288
+ },
2289
+ ],
2290
+ default: 'option1a',
2291
+ },
2292
+ {
2293
+ displayName: 'subOption',
2294
+ name: 'subOption',
2295
+ type: 'options',
2296
+ displayOptions: {
2297
+ show: {
2298
+ mainOption: ['option2'],
2299
+ },
2300
+ },
2301
+ options: [
2302
+ {
2303
+ name: 'option2a',
2304
+ value: 'option2a',
2305
+ },
2306
+ {
2307
+ name: 'option2b',
2308
+ value: 'option2b',
2309
+ },
2310
+ ],
2311
+ default: 'option2a',
2312
+ },
2313
+ {
2314
+ displayName: 'dependentParameter',
2315
+ name: 'dependentParameter',
2316
+ type: 'string',
2317
+ default: 'value1',
2318
+ required: true,
2319
+ displayOptions: {
2320
+ show: {
2321
+ mainOption: ['option1'],
2322
+ subOption: ['option1a'],
2323
+ },
2324
+ },
2325
+ },
2326
+ {
2327
+ displayName: 'dependentParameter',
2328
+ name: 'dependentParameter',
2329
+ type: 'string',
2330
+ default: 'value2',
2331
+ required: true,
2332
+ displayOptions: {
2333
+ show: {
2334
+ mainOption: ['option2'],
2335
+ subOption: ['option2a'],
2336
+ },
2337
+ },
2338
+ },
2339
+ ],
2340
+ nodeValues: {},
2341
+ },
2342
+ output: {
2343
+ noneDisplayedFalse: {
2344
+ defaultsFalse: {},
2345
+ defaultsTrue: {
2346
+ mainOption: 'option1',
2347
+ subOption: 'option1a',
2348
+ dependentParameter: 'value1',
2349
+ },
2350
+ },
2351
+ noneDisplayedTrue: {
2352
+ defaultsFalse: {},
2353
+ defaultsTrue: {
2354
+ mainOption: 'option1',
2355
+ subOption: 'option1a',
2356
+ dependentParameter: 'value1',
2357
+ },
2358
+ },
2359
+ },
2360
+ },
2361
+ {
2362
+ description:
2363
+ 'One property which is dependeny on two identically named properties of which only one gets displayed with different options. No value set at all. Order reversed',
2364
+ input: {
2365
+ nodePropertiesArray: [
2366
+ {
2367
+ displayName: 'dependentParameter',
2368
+ name: 'dependentParameter',
2369
+ type: 'string',
2370
+ default: 'value2',
2371
+ required: true,
2372
+ displayOptions: {
2373
+ show: {
2374
+ mainOption: ['option2'],
2375
+ subOption: ['option2a'],
2376
+ },
2377
+ },
2378
+ },
2379
+ {
2380
+ displayName: 'subOption',
2381
+ name: 'subOption',
2382
+ type: 'options',
2383
+ displayOptions: {
2384
+ show: {
2385
+ mainOption: ['option2'],
2386
+ },
2387
+ },
2388
+ options: [
2389
+ {
2390
+ name: 'option2a',
2391
+ value: 'option2a',
2392
+ },
2393
+ {
2394
+ name: 'option2b',
2395
+ value: 'option2b',
2396
+ },
2397
+ ],
2398
+ default: 'option2a',
2399
+ },
2400
+ {
2401
+ displayName: 'subOption',
2402
+ name: 'subOption',
2403
+ type: 'options',
2404
+ displayOptions: {
2405
+ show: {
2406
+ mainOption: ['option1'],
2407
+ },
2408
+ },
2409
+ options: [
2410
+ {
2411
+ name: 'option1a',
2412
+ value: 'option1a',
2413
+ },
2414
+ {
2415
+ name: 'option1b',
2416
+ value: 'option1b',
2417
+ },
2418
+ ],
2419
+ default: 'option1a',
2420
+ },
2421
+ {
2422
+ displayName: 'dependentParameter',
2423
+ name: 'dependentParameter',
2424
+ type: 'string',
2425
+ default: 'value1',
2426
+ required: true,
2427
+ displayOptions: {
2428
+ show: {
2429
+ mainOption: ['option1'],
2430
+ subOption: ['option1a'],
2431
+ },
2432
+ },
2433
+ },
2434
+ {
2435
+ displayName: 'mainOption',
2436
+ name: 'mainOption',
2437
+ type: 'options',
2438
+ options: [
2439
+ {
2440
+ name: 'option1',
2441
+ value: 'option1',
2442
+ },
2443
+ {
2444
+ name: 'option2',
2445
+ value: 'option2',
2446
+ },
2447
+ ],
2448
+ default: 'option1',
2449
+ },
2450
+ ],
2451
+ nodeValues: {},
2452
+ },
2453
+ output: {
2454
+ noneDisplayedFalse: {
2455
+ defaultsFalse: {},
2456
+ defaultsTrue: {
2457
+ mainOption: 'option1',
2458
+ subOption: 'option1a',
2459
+ dependentParameter: 'value1',
2460
+ },
2461
+ },
2462
+ noneDisplayedTrue: {
2463
+ defaultsFalse: {},
2464
+ defaultsTrue: {
2465
+ mainOption: 'option1',
2466
+ subOption: 'option1a',
2467
+ dependentParameter: 'value1',
2468
+ },
2469
+ },
2470
+ },
2471
+ },
2472
+ {
2473
+ description:
2474
+ 'One property which is dependeny on two identically named properties of which only one gets displayed with different options. No value set at all.',
2475
+ input: {
2476
+ nodePropertiesArray: [
2477
+ {
2478
+ displayName: 'mainOption',
2479
+ name: 'mainOption',
2480
+ type: 'options',
2481
+ options: [
2482
+ {
2483
+ name: 'option1',
2484
+ value: 'option1',
2485
+ },
2486
+ {
2487
+ name: 'option2',
2488
+ value: 'option2',
2489
+ },
2490
+ ],
2491
+ default: 'option1',
2492
+ },
2493
+ {
2494
+ displayName: 'subOption',
2495
+ name: 'subOption',
2496
+ type: 'options',
2497
+ displayOptions: {
2498
+ show: {
2499
+ mainOption: ['option1'],
2500
+ },
2501
+ },
2502
+ options: [
2503
+ {
2504
+ name: 'option1a',
2505
+ value: 'option1a',
2506
+ },
2507
+ {
2508
+ name: 'option1b',
2509
+ value: 'option1b',
2510
+ },
2511
+ ],
2512
+ default: 'option1a',
2513
+ },
2514
+ {
2515
+ displayName: 'subOption',
2516
+ name: 'subOption',
2517
+ type: 'options',
2518
+ displayOptions: {
2519
+ show: {
2520
+ mainOption: ['option2'],
2521
+ },
2522
+ },
2523
+ options: [
2524
+ {
2525
+ name: 'option2a',
2526
+ value: 'option2a',
2527
+ },
2528
+ {
2529
+ name: 'option2b',
2530
+ value: 'option2b',
2531
+ },
2532
+ ],
2533
+ default: 'option2a',
2534
+ },
2535
+ {
2536
+ displayName: 'dependentParameter',
2537
+ name: 'dependentParameter',
2538
+ type: 'string',
2539
+ default: 'value1',
2540
+ required: true,
2541
+ displayOptions: {
2542
+ show: {
2543
+ mainOption: ['option1'],
2544
+ subOption: ['option1a'],
2545
+ },
2546
+ },
2547
+ },
2548
+ {
2549
+ displayName: 'dependentParameter',
2550
+ name: 'dependentParameter',
2551
+ type: 'string',
2552
+ default: 'value2',
2553
+ required: true,
2554
+ displayOptions: {
2555
+ show: {
2556
+ mainOption: ['option2'],
2557
+ subOption: ['option2a'],
2558
+ },
2559
+ },
2560
+ },
2561
+ ],
2562
+ nodeValues: {
2563
+ mainOption: 'option2',
2564
+ },
2565
+ },
2566
+ output: {
2567
+ noneDisplayedFalse: {
2568
+ defaultsFalse: {
2569
+ mainOption: 'option2',
2570
+ },
2571
+ defaultsTrue: {
2572
+ mainOption: 'option2',
2573
+ subOption: 'option2a',
2574
+ dependentParameter: 'value2',
2575
+ },
2576
+ },
2577
+ noneDisplayedTrue: {
2578
+ defaultsFalse: {
2579
+ mainOption: 'option2',
2580
+ },
2581
+ defaultsTrue: {
2582
+ mainOption: 'option2',
2583
+ subOption: 'option2a',
2584
+ dependentParameter: 'value2',
2585
+ },
2586
+ },
2587
+ },
2588
+ },
2589
+ {
2590
+ description:
2591
+ 'complex type "fixedCollection" with "multipleValues: true". Which contains complex type "fixedCollection" with "multipleValues: true". One value set.',
2592
+ input: {
2593
+ nodePropertiesArray: [
2594
+ {
2595
+ displayName: 'Values1',
2596
+ name: 'values1',
2597
+ type: 'fixedCollection',
2598
+ typeOptions: {
2599
+ multipleValues: true,
2600
+ },
2601
+ description: 'The value to set.',
2602
+ default: {},
2603
+ options: [
2604
+ {
2605
+ displayName: 'Options1',
2606
+ name: 'options1',
2607
+ values: [
2608
+ {
2609
+ displayName: 'Values2',
2610
+ name: 'values2',
2611
+ type: 'fixedCollection',
2612
+ typeOptions: {
2613
+ multipleValues: true,
2614
+ },
2615
+ description: 'The value to set.',
2616
+ default: {},
2617
+ options: [
2618
+ {
2619
+ displayName: 'Options2',
2620
+ name: 'options2',
2621
+ values: [
2622
+ {
2623
+ name: 'string1',
2624
+ displayName: 'string1',
2625
+ type: 'string',
2626
+ default: 'default string1',
2627
+ },
2628
+ {
2629
+ name: 'number1',
2630
+ displayName: 'number1',
2631
+ type: 'number',
2632
+ default: 0,
2633
+ },
2634
+ ],
2635
+ },
2636
+ ],
2637
+ },
2638
+ ],
2639
+ },
2640
+ ],
2641
+ },
2642
+ ],
2643
+ nodeValues: {
2644
+ values1: {
2645
+ options1: [
2646
+ {
2647
+ values2: {
2648
+ options2: [
2649
+ {
2650
+ number1: 1,
2651
+ },
2652
+ ],
2653
+ },
2654
+ },
2655
+ ],
2656
+ },
2657
+ },
2658
+ },
2659
+ output: {
2660
+ noneDisplayedFalse: {
2661
+ defaultsFalse: {
2662
+ values1: {
2663
+ options1: [
2664
+ {
2665
+ values2: {
2666
+ options2: [
2667
+ {
2668
+ number1: 1,
2669
+ },
2670
+ ],
2671
+ },
2672
+ },
2673
+ ],
2674
+ },
2675
+ },
2676
+ defaultsTrue: {
2677
+ values1: {
2678
+ options1: [
2679
+ {
2680
+ values2: {
2681
+ options2: [
2682
+ {
2683
+ string1: 'default string1',
2684
+ number1: 1,
2685
+ },
2686
+ ],
2687
+ },
2688
+ },
2689
+ ],
2690
+ },
2691
+ },
2692
+ },
2693
+ noneDisplayedTrue: {
2694
+ defaultsFalse: {
2695
+ values1: {
2696
+ options1: [
2697
+ {
2698
+ values2: {
2699
+ options2: [
2700
+ {
2701
+ number1: 1,
2702
+ },
2703
+ ],
2704
+ },
2705
+ },
2706
+ ],
2707
+ },
2708
+ },
2709
+ defaultsTrue: {
2710
+ values1: {
2711
+ options1: [
2712
+ {
2713
+ values2: {
2714
+ options2: [
2715
+ {
2716
+ string1: 'default string1',
2717
+ number1: 1,
2718
+ },
2719
+ ],
2720
+ },
2721
+ },
2722
+ ],
2723
+ },
2724
+ },
2725
+ },
2726
+ },
2727
+ },
2728
+ {
2729
+ description:
2730
+ 'complex type "fixedCollection" with "multipleValues: true". Which contains parameters which get displayed on a parameter with a default expression with relative parameter references.',
2731
+ input: {
2732
+ nodePropertiesArray: [
2733
+ {
2734
+ displayName: 'Values1',
2735
+ name: 'values1',
2736
+ type: 'fixedCollection',
2737
+ typeOptions: {
2738
+ multipleValues: true,
2739
+ },
2740
+ description: 'The value to set.',
2741
+ default: {},
2742
+ options: [
2743
+ {
2744
+ displayName: 'Options1',
2745
+ name: 'options1',
2746
+ values: [
2747
+ {
2748
+ displayName: 'Key',
2749
+ name: 'key',
2750
+ type: 'string',
2751
+ default: '',
2752
+ },
2753
+ {
2754
+ displayName: 'Type',
2755
+ name: 'type',
2756
+ type: 'hidden',
2757
+ default: '={{$parameter["&key"].split("|")[1]}}',
2758
+ },
2759
+ {
2760
+ displayName: 'Title Value',
2761
+ name: 'titleValue',
2762
+ displayOptions: {
2763
+ show: {
2764
+ type: ['title'],
2765
+ },
2766
+ },
2767
+ type: 'string',
2768
+ default: 'defaultTitle',
2769
+ },
2770
+ {
2771
+ displayName: 'Title Number',
2772
+ name: 'numberValue',
2773
+ displayOptions: {
2774
+ show: {
2775
+ type: ['number'],
2776
+ },
2777
+ },
2778
+ type: 'number',
2779
+ default: 1,
2780
+ },
2781
+ ],
2782
+ },
2783
+ ],
2784
+ },
2785
+ ],
2786
+ nodeValues: {
2787
+ values1: {
2788
+ options1: [
2789
+ {
2790
+ key: 'asdf|title',
2791
+ titleValue: 'different',
2792
+ },
2793
+ ],
2794
+ },
2795
+ },
2796
+ },
2797
+ output: {
2798
+ noneDisplayedFalse: {
2799
+ defaultsFalse: {
2800
+ values1: {
2801
+ options1: [
2802
+ {
2803
+ key: 'asdf|title',
2804
+ titleValue: 'different',
2805
+ },
2806
+ ],
2807
+ },
2808
+ },
2809
+ defaultsTrue: {
2810
+ values1: {
2811
+ options1: [
2812
+ {
2813
+ key: 'asdf|title',
2814
+ type: '={{$parameter["&key"].split("|")[1]}}',
2815
+ // This is not great that it displays this theoretically hidden parameter
2816
+ // but because we can not resolve the values for now
2817
+ numberValue: 1,
2818
+ titleValue: 'different',
2819
+ },
2820
+ ],
2821
+ },
2822
+ },
2823
+ },
2824
+ noneDisplayedTrue: {
2825
+ defaultsFalse: {
2826
+ values1: {
2827
+ options1: [
2828
+ {
2829
+ key: 'asdf|title',
2830
+ titleValue: 'different',
2831
+ },
2832
+ ],
2833
+ },
2834
+ },
2835
+ defaultsTrue: {
2836
+ values1: {
2837
+ options1: [
2838
+ {
2839
+ key: 'asdf|title',
2840
+ type: '={{$parameter["&key"].split("|")[1]}}',
2841
+ titleValue: 'different',
2842
+ numberValue: 1,
2843
+ },
2844
+ ],
2845
+ },
2846
+ },
2847
+ },
2848
+ },
2849
+ },
2850
+ {
2851
+ description:
2852
+ 'complex type "fixedCollection" with "multipleValues: true". Which contains parameter of type "multiOptions" and has so an array default value',
2853
+ input: {
2854
+ nodePropertiesArray: [
2855
+ {
2856
+ name: 'values',
2857
+ displayName: 'Values',
2858
+ type: 'fixedCollection',
2859
+ typeOptions: {
2860
+ multipleValues: true,
2861
+ },
2862
+ default: {},
2863
+ options: [
2864
+ {
2865
+ name: 'propertyValues',
2866
+ displayName: 'Property',
2867
+ values: [
2868
+ {
2869
+ displayName: 'Options',
2870
+ name: 'multiSelectValue',
2871
+ type: 'multiOptions',
2872
+ options: [
2873
+ {
2874
+ name: 'Value1',
2875
+ value: 'value1',
2876
+ },
2877
+ {
2878
+ name: 'Value2',
2879
+ value: 'value2',
2880
+ },
2881
+ ],
2882
+ default: [],
2883
+ },
2884
+ ],
2885
+ },
2886
+ ],
2887
+ },
2888
+ ],
2889
+ nodeValues: {
2890
+ values: {
2891
+ propertyValues: [
2892
+ {
2893
+ multiSelectValue: [],
2894
+ },
2895
+ ],
2896
+ },
2897
+ },
2898
+ },
2899
+ output: {
2900
+ noneDisplayedFalse: {
2901
+ defaultsFalse: {
2902
+ values: {
2903
+ propertyValues: [{}],
2904
+ },
2905
+ },
2906
+ defaultsTrue: {
2907
+ values: {
2908
+ propertyValues: [
2909
+ {
2910
+ multiSelectValue: [],
2911
+ },
2912
+ ],
2913
+ },
2914
+ },
2915
+ },
2916
+ noneDisplayedTrue: {
2917
+ defaultsFalse: {
2918
+ values: {
2919
+ propertyValues: [{}],
2920
+ },
2921
+ },
2922
+ defaultsTrue: {
2923
+ values: {
2924
+ propertyValues: [
2925
+ {
2926
+ multiSelectValue: [],
2927
+ },
2928
+ ],
2929
+ },
2930
+ },
2931
+ },
2932
+ },
2933
+ },
2934
+ {
2935
+ description:
2936
+ 'complex type "fixedCollection" with "multipleValues: true". Which contains parameter of type "string" with "multipleValues: true" and a custom default value',
2937
+ input: {
2938
+ nodePropertiesArray: [
2939
+ {
2940
+ name: 'values',
2941
+ displayName: 'Values',
2942
+ type: 'fixedCollection',
2943
+ typeOptions: {
2944
+ multipleValues: true,
2945
+ },
2946
+ default: {},
2947
+ options: [
2948
+ {
2949
+ name: 'propertyValues',
2950
+ displayName: 'Property',
2951
+ values: [
2952
+ {
2953
+ displayName: 'MultiString',
2954
+ name: 'multiString',
2955
+ type: 'string',
2956
+ typeOptions: {
2957
+ multipleValues: true,
2958
+ },
2959
+ default: ['value1'],
2960
+ },
2961
+ ],
2962
+ },
2963
+ ],
2964
+ },
2965
+ ],
2966
+ nodeValues: {
2967
+ values: {
2968
+ propertyValues: [
2969
+ {
2970
+ multiString: ['value1'],
2971
+ },
2972
+ ],
2973
+ },
2974
+ },
2975
+ },
2976
+ output: {
2977
+ noneDisplayedFalse: {
2978
+ defaultsFalse: {
2979
+ values: {
2980
+ propertyValues: [{}],
2981
+ },
2982
+ },
2983
+ defaultsTrue: {
2984
+ values: {
2985
+ propertyValues: [
2986
+ {
2987
+ multiString: ['value1'],
2988
+ },
2989
+ ],
2990
+ },
2991
+ },
2992
+ },
2993
+ noneDisplayedTrue: {
2994
+ defaultsFalse: {
2995
+ values: {
2996
+ propertyValues: [{}],
2997
+ },
2998
+ },
2999
+ defaultsTrue: {
3000
+ values: {
3001
+ propertyValues: [
3002
+ {
3003
+ multiString: ['value1'],
3004
+ },
3005
+ ],
3006
+ },
3007
+ },
3008
+ },
3009
+ },
3010
+ },
3011
+ ];
3012
+
3013
+ for (const testData of tests) {
3014
+ test(testData.description, () => {
3015
+ // returnDefaults: false | returnNoneDisplayed: false
3016
+ let result = NodeHelpers.getNodeParameters(
3017
+ testData.input.nodePropertiesArray,
3018
+ testData.input.nodeValues,
3019
+ false,
3020
+ false,
3021
+ );
3022
+ expect(result).toEqual(testData.output.noneDisplayedFalse.defaultsFalse);
3023
+
3024
+ // returnDefaults: true | returnNoneDisplayed: false
3025
+ result = NodeHelpers.getNodeParameters(
3026
+ testData.input.nodePropertiesArray,
3027
+ testData.input.nodeValues,
3028
+ true,
3029
+ false,
3030
+ );
3031
+ expect(result).toEqual(testData.output.noneDisplayedFalse.defaultsTrue);
3032
+
3033
+ // returnDefaults: false | returnNoneDisplayed: true
3034
+ result = NodeHelpers.getNodeParameters(
3035
+ testData.input.nodePropertiesArray,
3036
+ testData.input.nodeValues,
3037
+ false,
3038
+ true,
3039
+ );
3040
+ expect(result).toEqual(testData.output.noneDisplayedTrue.defaultsFalse);
3041
+
3042
+ // returnDefaults: true | returnNoneDisplayed: true
3043
+ result = NodeHelpers.getNodeParameters(
3044
+ testData.input.nodePropertiesArray,
3045
+ testData.input.nodeValues,
3046
+ true,
3047
+ true,
3048
+ );
3049
+ expect(result).toEqual(testData.output.noneDisplayedTrue.defaultsTrue);
3050
+ });
3051
+ }
3052
+ });
3053
+ });