@@ -4,6 +4,7 @@ import {FixedSizeList} from 'react-window';
44import {
55 FixedSizeNodeComponentProps ,
66 FixedSizeNodeData ,
7+ FixedSizeNodeRecord ,
78 FixedSizeTree ,
89 FixedSizeTreeProps ,
910 FixedSizeTreeState ,
@@ -75,6 +76,18 @@ describe('FixedSizeTree', () => {
7576 }
7677 }
7778
79+ const mountComponent = ( ) : typeof component =>
80+ mount (
81+ < FixedSizeTree < ExtendedData >
82+ itemSize = { 30 }
83+ treeWalker = { treeWalkerSpy }
84+ height = { 500 }
85+ width = { 500 }
86+ >
87+ { Node }
88+ </ FixedSizeTree > ,
89+ ) ;
90+
7891 beforeEach ( ( ) => {
7992 tree = {
8093 children : [
@@ -89,16 +102,7 @@ describe('FixedSizeTree', () => {
89102
90103 treeWalkerSpy = jest . fn ( treeWalker ) ;
91104
92- component = mount (
93- < FixedSizeTree < ExtendedData >
94- itemSize = { 30 }
95- treeWalker = { treeWalkerSpy }
96- height = { 500 }
97- width = { 500 }
98- >
99- { Node }
100- </ FixedSizeTree > ,
101- ) ;
105+ component = mountComponent ( ) ;
102106 } ) ;
103107
104108 it ( 'renders a component' , ( ) => {
@@ -479,6 +483,33 @@ describe('FixedSizeTree', () => {
479483 expect ( foo2 ! . isOpen ) . toBeTruthy ( ) ;
480484 expect ( foo3 ! . isOpen ) . toBeTruthy ( ) ;
481485 } ) ;
486+
487+ it ( 'opennessState works when node is created during update' , async ( ) => {
488+ component . unmount ( ) ;
489+ isOpenByDefault = false ;
490+ component = mountComponent ( ) ;
491+ treeInstance = component . instance ( ) ;
492+
493+ await treeInstance . recomputeTree ( {
494+ opennessState : {
495+ 'foo-1' : true ,
496+ 'foo-2' : true ,
497+ 'foo-3' : true ,
498+ } ,
499+ refreshNodes : true ,
500+ } ) ;
501+ component . update ( ) ;
502+
503+ const { records} = component . find ( FixedSizeList ) . prop ( 'itemData' ) as {
504+ records : Record < string , FixedSizeNodeRecord < ExtendedData > > ;
505+ } ;
506+
507+ expect ( Object . keys ( records ) . map ( ( key ) => records [ key ] . isOpen ) ) . toEqual ( [
508+ true ,
509+ true ,
510+ true ,
511+ ] ) ;
512+ } ) ;
482513 } ) ;
483514
484515 it ( 'provides a toggle function that changes openness state of the specific node' , async ( ) => {
0 commit comments