4
4
findTreeData ,
5
5
filterTreeData ,
6
6
openParentsInTreeData ,
7
+ updateCheckedInTreeData ,
7
8
} from "../../lib/HeTree" ;
8
9
9
10
test ( "walkTreeDataGenerator" , ( ) => {
@@ -155,6 +156,34 @@ test("openParentsInTreeData", () => {
155
156
newOpenids = openParentsInTreeData ( cur , [ ] , "===================" ) ;
156
157
expect ( newOpenids . toString ( ) ) . toBe ( "" ) ;
157
158
} ) ;
159
+ test ( "updateCheckedInTreeData" , ( ) => {
160
+ let data = createData2 ( ) ;
161
+ let cur = [ ...data ] ;
162
+ let ids = [ 3 ] ;
163
+ let [ newIds , semi , all ] = updateCheckedInTreeData ( cur , ids , [ ] , true ) ;
164
+ expect ( newIds . toString ( ) ) . toBe ( "3" ) ;
165
+ //
166
+ [ newIds , semi ] = updateCheckedInTreeData ( cur , ids , [ 3 ] , true ) ;
167
+ expect ( newIds . toString ( ) ) . toBe ( "3,6,7" ) ;
168
+ expect ( semi . toString ( ) ) . toBe ( "1" ) ;
169
+ //
170
+ [ newIds , semi ] = updateCheckedInTreeData ( cur , [ ] , [ 8 , 10 ] , true ) ;
171
+ expect ( newIds . toString ( ) ) . toBe ( "10,2,4,5,8" ) ;
172
+ expect ( semi . toString ( ) ) . toBe ( "1" ) ;
173
+ // uncheck
174
+ [ newIds , semi , all ] = updateCheckedInTreeData ( cur , [ 10 , 2 , 4 , 8 , 5 ] , [ 8 ] , false ) ;
175
+ expect ( newIds . toString ( ) ) . toBe ( "10,5" ) ;
176
+ expect ( semi . toString ( ) ) . toBe ( "1,2" ) ;
177
+ expect ( all . toString ( ) ) . toBe ( "1,10,2,5" ) ;
178
+ //
179
+ [ newIds , semi , all ] = updateCheckedInTreeData ( cur , [ 1 , 2 , 5 , 10 , 4 , 8 , 3 , 7 , 6 ] , [ 6 , 7 ] , ! false ) ;
180
+ expect ( newIds . length ) . toBe ( 9 ) ;
181
+ expect ( semi . length ) . toBe ( 0 ) ;
182
+ expect ( all . length ) . toBe ( 9 ) ;
183
+ //
184
+ [ newIds , semi , all ] = updateCheckedInTreeData ( cur , [ 1 , 2 , 5 , 10 , 4 , 8 , 3 , 7 , 6 ] , [ 6 , 7 ] , false ) ;
185
+ expect ( semi . toString ( ) ) . toBe ( '1' ) ;
186
+ } ) ;
158
187
159
188
function createData ( ) {
160
189
// return example tree data
@@ -284,3 +313,71 @@ function createData() {
284
313
} ,
285
314
] ;
286
315
}
316
+
317
+ function createData2 ( ) {
318
+ // same to flatData.test
319
+ // size 9
320
+ /* structure
321
+ 1
322
+ 2
323
+ 5
324
+ 10
325
+ 4
326
+ 8
327
+ 3
328
+ 7
329
+ 6
330
+ */
331
+ return [
332
+ {
333
+ "id" : 1 ,
334
+ "name" : "Root Category" ,
335
+ "children" : [
336
+ {
337
+ "id" : 2 ,
338
+ "name" : "Technology" ,
339
+ "children" : [
340
+ {
341
+ "id" : 5 ,
342
+ "name" : "Hardware" ,
343
+ "children" : [
344
+ {
345
+ "id" : 10 ,
346
+ "name" : "Computer Components" ,
347
+ "children" : [ ]
348
+ }
349
+ ]
350
+ } ,
351
+ {
352
+ "id" : 4 ,
353
+ "name" : "Programming" ,
354
+ "children" : [
355
+ {
356
+ "id" : 8 ,
357
+ "name" : "Python" ,
358
+ "children" : [ ]
359
+ }
360
+ ]
361
+ }
362
+ ]
363
+ } ,
364
+ {
365
+ "id" : 3 ,
366
+ "name" : "Science" ,
367
+ "children" : [
368
+ {
369
+ "id" : 7 ,
370
+ "name" : "Biology" ,
371
+ "children" : [ ]
372
+ } ,
373
+ {
374
+ "id" : 6 ,
375
+ "name" : "Physics" ,
376
+ "children" : [ ]
377
+ }
378
+ ]
379
+ }
380
+ ]
381
+ }
382
+ ]
383
+ }
0 commit comments