@@ -518,6 +518,52 @@ describe('Grid Service', () => {
518
518
// reset mock
519
519
jest . spyOn ( gridStub , 'getOptions' ) . mockReturnValue ( { } ) ;
520
520
} ) ;
521
+
522
+ it ( 'should invalidate and rerender the tree dataset when grid option "enableTreeData" is set when calling "updateItem"' , ( ) => {
523
+ const mockUpdatedItem = { id : 1 , file : 'vacation.txt' , size : 2.2 , parentId : 0 } ;
524
+ const mockFlatDataset = [ { id : 0 , file : 'documents' } , { id : 1 , file : 'vacation.txt' , parentId : 0 } , mockUpdatedItem ] ;
525
+ const mockHierarchical = [ { id : 0 , file : 'documents' , files : [ { id : 1 , file : 'vacation.txt' } , mockUpdatedItem ] } ] ;
526
+ const mockColumns = [ { id : 'file' , field : 'file' , } , { id : 'size' , field : 'size' , } ] as Column [ ] ;
527
+
528
+ jest . spyOn ( dataviewStub , 'getItems' ) . mockReturnValue ( mockFlatDataset ) ;
529
+ jest . spyOn ( dataviewStub , 'getRowById' ) . mockReturnValue ( 0 ) ;
530
+ jest . spyOn ( treeDataServiceStub , 'convertFlatParentChildToTreeDatasetAndSort' ) . mockReturnValue ( { flat : mockFlatDataset as any [ ] , hierarchical : mockHierarchical as any [ ] } ) ;
531
+ jest . spyOn ( gridStub , 'getOptions' ) . mockReturnValue ( { enableAutoResize : true , enableRowSelection : true , enableTreeData : true } as GridOption ) ;
532
+ jest . spyOn ( SharedService . prototype , 'allColumns' , 'get' ) . mockReturnValue ( mockColumns ) ;
533
+ const setItemSpy = jest . spyOn ( dataviewStub , 'setItems' ) ;
534
+ const updateSpy = jest . spyOn ( dataviewStub , 'updateItem' ) ;
535
+ const invalidateSpy = jest . spyOn ( service , 'invalidateHierarchicalDataset' ) ;
536
+
537
+ service . updateItem ( mockUpdatedItem ) ;
538
+
539
+ expect ( updateSpy ) . toHaveBeenCalledTimes ( 1 ) ;
540
+ expect ( updateSpy ) . toHaveBeenCalledWith ( mockUpdatedItem . id , mockUpdatedItem ) ;
541
+ expect ( invalidateSpy ) . toHaveBeenCalled ( ) ;
542
+ expect ( setItemSpy ) . toHaveBeenCalledWith ( mockFlatDataset ) ;
543
+ } ) ;
544
+
545
+ it ( 'should invalidate and rerender the tree dataset when grid option "enableTreeData" is set when calling "updateItems"' , ( ) => {
546
+ const mockUpdatedItem = { id : 1 , file : 'vacation.txt' , size : 2.2 , parentId : 0 } ;
547
+ const mockFlatDataset = [ { id : 0 , file : 'documents' } , { id : 1 , file : 'vacation.txt' , parentId : 0 } , mockUpdatedItem ] ;
548
+ const mockHierarchical = [ { id : 0 , file : 'documents' , files : [ { id : 1 , file : 'vacation.txt' } , mockUpdatedItem ] } ] ;
549
+ const mockColumns = [ { id : 'file' , field : 'file' , } , { id : 'size' , field : 'size' , } ] as Column [ ] ;
550
+
551
+ jest . spyOn ( dataviewStub , 'getItems' ) . mockReturnValue ( mockFlatDataset ) ;
552
+ jest . spyOn ( dataviewStub , 'getRowById' ) . mockReturnValue ( 0 ) ;
553
+ jest . spyOn ( treeDataServiceStub , 'convertFlatParentChildToTreeDatasetAndSort' ) . mockReturnValue ( { flat : mockFlatDataset as any [ ] , hierarchical : mockHierarchical as any [ ] } ) ;
554
+ jest . spyOn ( gridStub , 'getOptions' ) . mockReturnValue ( { enableAutoResize : true , enableRowSelection : true , enableTreeData : true } as GridOption ) ;
555
+ jest . spyOn ( SharedService . prototype , 'allColumns' , 'get' ) . mockReturnValue ( mockColumns ) ;
556
+ const setItemSpy = jest . spyOn ( dataviewStub , 'setItems' ) ;
557
+ const updateSpy = jest . spyOn ( dataviewStub , 'updateItems' ) ;
558
+ const invalidateSpy = jest . spyOn ( service , 'invalidateHierarchicalDataset' ) ;
559
+
560
+ service . updateItems ( [ mockUpdatedItem ] ) ;
561
+
562
+ expect ( updateSpy ) . toHaveBeenCalledTimes ( 1 ) ;
563
+ expect ( updateSpy ) . toHaveBeenCalledWith ( [ mockUpdatedItem . id ] , [ mockUpdatedItem ] ) ;
564
+ expect ( invalidateSpy ) . toHaveBeenCalled ( ) ;
565
+ expect ( setItemSpy ) . toHaveBeenCalledWith ( mockFlatDataset ) ;
566
+ } ) ;
521
567
} ) ;
522
568
523
569
describe ( 'addItem methods' , ( ) => {
0 commit comments