@@ -35,8 +35,16 @@ beforeEach(() => {
35
35
beforeSelect : jest . fn ( function ( ) { } ) ,
36
36
onDestroy : jest . fn ( function ( ) { } ) ,
37
37
} ;
38
- App = function App ( ) {
39
- const [ Tablist , Panellist , readyFunction ] = useDynTabs ( op ) ;
38
+ App = function App ( { options} ) {
39
+ const _options = Object . assign ( { } , op , options ) ;
40
+ if ( _options . tabs ) {
41
+ const _tabs = [ ] ;
42
+ _options . tabs . map ( ( tab ) => {
43
+ _tabs . push ( { ...tab } ) ;
44
+ } ) ;
45
+ _options . tabs = _tabs ;
46
+ }
47
+ const [ Tablist , Panellist , readyFunction ] = useDynTabs ( _options ) ;
40
48
ready = readyFunction ;
41
49
readyFunction ( ( instanceParam ) => {
42
50
instance = instanceParam ;
@@ -48,9 +56,9 @@ beforeEach(() => {
48
56
</ div >
49
57
) ;
50
58
} ;
51
- renderApp = ( ) => {
59
+ renderApp = ( options = { } ) => {
52
60
act ( ( ) => {
53
- render ( < App > </ App > , container ) ;
61
+ render ( < App options = { options } > </ App > , container ) ;
54
62
} ) ;
55
63
} ;
56
64
} ) ;
@@ -168,6 +176,74 @@ describe('apply multiple actions : ', () => {
168
176
expect ( op . beforeSelect . mock . calls . length ) . toBe ( 0 ) ;
169
177
} ) ;
170
178
} ) ;
179
+ describe ( 'lazy tabs : ' , ( ) => {
180
+ const Panel = React . lazy ( ( ) => import ( './mock/mock-lazy-panel-1.js' ) ) ;
181
+ const LazyPanel = ( ) => {
182
+ return (
183
+ < React . Suspense fallback = { < p > loading...</ p > } >
184
+ < Panel > </ Panel >
185
+ </ React . Suspense >
186
+ ) ;
187
+ } ;
188
+ const renderLazyApp = ( ) =>
189
+ renderApp ( {
190
+ tabs : [
191
+ {
192
+ id : '1' ,
193
+ title : 'mock tab 1' ,
194
+ lazy : true ,
195
+ panelComponent : < p > tab1 content</ p > ,
196
+ } ,
197
+ {
198
+ id : '2' ,
199
+ title : 'mock tab 2' ,
200
+ panelComponent : < p > tab2 content</ p > ,
201
+ } ,
202
+ {
203
+ id : '3' ,
204
+ title : 'mock tab 3' ,
205
+ lazy : true ,
206
+ panelComponent : ( ) => < p > tab3 content</ p > ,
207
+ } ,
208
+ {
209
+ id : '4' ,
210
+ title : 'mock tab 4' ,
211
+ lazy : true ,
212
+ panelComponent : LazyPanel ,
213
+ } ,
214
+ ] ,
215
+ } ) ;
216
+ test ( 'lazy panels should be null initially expect selected panel' , ( ) => {
217
+ expect . assertions ( 16 ) ;
218
+ renderLazyApp ( ) ;
219
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="1"] p' ) !== null ) . toBe ( true ) ;
220
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="2"] p' ) !== null ) . toBe ( true ) ;
221
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="3"] p' ) === null ) . toBe ( true ) ;
222
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="4"] p' ) === null ) . toBe ( true ) ;
223
+ act ( ( ) => {
224
+ instance . select ( '4' ) ;
225
+ instance . select ( '3' ) ;
226
+ } ) ;
227
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="1"] p' ) !== null ) . toBe ( true ) ;
228
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="2"] p' ) !== null ) . toBe ( true ) ;
229
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="3"] p' ) !== null ) . toBe ( true ) ;
230
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="4"] p' ) === null ) . toBe ( true ) ;
231
+ act ( ( ) => {
232
+ instance . select ( '4' ) ;
233
+ } ) ;
234
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="1"] p' ) !== null ) . toBe ( true ) ;
235
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="2"] p' ) !== null ) . toBe ( true ) ;
236
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="3"] p' ) !== null ) . toBe ( true ) ;
237
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="4"] p' ) !== null ) . toBe ( true ) ;
238
+ act ( ( ) => {
239
+ instance . select ( '3' ) ;
240
+ } ) ;
241
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="1"] p' ) !== null ) . toBe ( true ) ;
242
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="2"] p' ) !== null ) . toBe ( true ) ;
243
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="3"] p' ) !== null ) . toBe ( true ) ;
244
+ expect ( document . querySelector ( '.rc-dyn-tabs-panel[tab-id="4"] p' ) !== null ) . toBe ( true ) ;
245
+ } ) ;
246
+ } ) ;
171
247
describe ( 'calling some action inside the events options' , ( ) => {
172
248
test ( 'select method can be called inside the onLoad option' , ( ) => {
173
249
op . onLoad = jest . fn ( function ( ) {
0 commit comments