@@ -81,9 +81,9 @@ describe("actions", () => {
81
81
} ) ;
82
82
return act ( ( ) => {
83
83
return _api . select ( '2' ) . then ( result => {
84
- expect ( typeof result != 'undefined' ) . toBe ( true ) ;
84
+ expect ( result . hasOwnProperty ( 'currentData' ) && result . hasOwnProperty ( 'instance' ) ) . toBe ( true ) ;
85
85
return _api . close ( '2' ) . then ( result => {
86
- expect ( typeof result != 'undefined' ) . toBe ( true ) ;
86
+ expect ( result . hasOwnProperty ( 'currentData' ) && result . hasOwnProperty ( 'instance' ) ) . toBe ( true ) ;
87
87
} ) ;
88
88
} ) ;
89
89
} ) ;
@@ -169,6 +169,195 @@ describe("actions", () => {
169
169
expect ( op . onChange . mock . calls . length ) . toBe ( 0 ) ;
170
170
expect ( op . onInit . mock . calls . length ) . toBe ( 3 ) ;
171
171
} ) ;
172
+ test ( 'select a tab twice' , ( ) => {
173
+ let _api ;
174
+ expect . assertions ( 3 ) ;
175
+ act ( ( ) => {
176
+ const App = function ( props ) {
177
+ const [ Tablist , Panellist , api ] = useDynTabs ( op ) ;
178
+ _api = api ;
179
+ return (
180
+ < div >
181
+ < Tablist > </ Tablist >
182
+ < Panellist > </ Panellist >
183
+ </ div >
184
+ ) ;
185
+ } ;
186
+ render ( < App > </ App > , container ) ;
187
+ } ) ;
188
+ return act ( ( ) => {
189
+ return _api . select ( '1' ) . then ( result => {
190
+ expect ( result . hasOwnProperty ( 'currentData' ) && result . hasOwnProperty ( 'instance' ) ) . toBe ( true ) ;
191
+ expect ( op . onChange . mock . calls . length === 0 ) . toBe ( true ) ;
192
+ expect ( op . onInit . mock . calls . length === 2 ) . toBe ( true ) ;
193
+ } ) ;
194
+ } ) ;
195
+ } ) ;
196
+ test ( 'selecting none existent tab' , ( ) => {
197
+ let _api ;
198
+ expect . assertions ( 5 ) ;
199
+ act ( ( ) => {
200
+ const App = function ( props ) {
201
+ const [ Tablist , Panellist , api ] = useDynTabs ( op ) ;
202
+ _api = api ;
203
+ return (
204
+ < div >
205
+ < Tablist > </ Tablist >
206
+ < Panellist > </ Panellist >
207
+ </ div >
208
+ ) ;
209
+ } ;
210
+ render ( < App > </ App > , container ) ;
211
+ } ) ;
212
+ return act ( ( ) => {
213
+ return _api . select ( '3' ) . then ( result => {
214
+ expect ( result . hasOwnProperty ( 'currentData' ) && result . hasOwnProperty ( 'instance' ) ) . toBe ( true ) ;
215
+ expect ( document . querySelector ( '.rc-dyn-tabs-selected' ) == null ) . toBe ( true ) ;
216
+ expect ( _api . getCopyData ( ) . selectedTabID === '3' ) . toBe ( true ) ;
217
+ expect ( op . onChange . mock . calls . length === 1 ) . toBe ( true ) ;
218
+ expect ( op . onInit . mock . calls . length === 2 ) . toBe ( true ) ;
219
+ } ) ;
220
+ } ) ;
221
+ } ) ;
222
+ test ( 'calling select method with falsy value as a parameter' , ( ) => {
223
+ let _api ;
224
+ expect . assertions ( 6 ) ;
225
+ act ( ( ) => {
226
+ const App = function ( props ) {
227
+ const [ Tablist , Panellist , api ] = useDynTabs ( op ) ;
228
+ _api = api ;
229
+ return (
230
+ < div >
231
+ < Tablist > </ Tablist >
232
+ < Panellist > </ Panellist >
233
+ </ div >
234
+ ) ;
235
+ } ;
236
+ render ( < App > </ App > , container ) ;
237
+ } ) ;
238
+ return act ( ( ) => {
239
+ try {
240
+ _api . select ( ) ;
241
+ _api . select ( undefined ) ;
242
+ } catch ( er ) {
243
+ expect ( _api . getCopyData ( ) . selectedTabID === '1' ) . toBe ( true ) ;
244
+ expect ( op . onChange . mock . calls . length === 0 ) . toBe ( true ) ;
245
+ expect ( op . onInit . mock . calls . length === 1 ) . toBe ( true ) ;
246
+ }
247
+ return _api . select ( null ) . then ( result => {
248
+ expect ( op . onChange . mock . calls . length === 1 ) . toBe ( true ) ;
249
+ expect ( op . onInit . mock . calls . length === 2 ) . toBe ( true ) ;
250
+ expect ( _api . getCopyData ( ) . selectedTabID === null ) . toBe ( true ) ;
251
+ } ) ;
252
+ } ) ;
253
+ } ) ;
254
+ test ( 'close a none opened tab' , ( ) => {
255
+ let _api ;
256
+ expect . assertions ( 3 ) ;
257
+ act ( ( ) => {
258
+ const App = function ( props ) {
259
+ const [ Tablist , Panellist , api ] = useDynTabs ( op ) ;
260
+ _api = api ;
261
+ return (
262
+ < div >
263
+ < Tablist > </ Tablist >
264
+ < Panellist > </ Panellist >
265
+ </ div >
266
+ ) ;
267
+ } ;
268
+ render ( < App > </ App > , container ) ;
269
+ } ) ;
270
+ return act ( ( ) => {
271
+ return _api . close ( '4' ) . then ( result => {
272
+ expect ( result . hasOwnProperty ( 'currentData' ) && result . hasOwnProperty ( 'instance' ) ) . toBe ( true ) ;
273
+ expect ( op . onChange . mock . calls . length === 0 ) . toBe ( true ) ;
274
+ expect ( op . onInit . mock . calls . length === 2 ) . toBe ( true ) ;
275
+ } ) ;
276
+ } ) ;
277
+ } ) ;
278
+ test ( 'calling close method with falsy value as a parameter' , ( ) => {
279
+ let _api ;
280
+ expect . assertions ( 6 ) ;
281
+ act ( ( ) => {
282
+ const App = function ( props ) {
283
+ const [ Tablist , Panellist , api ] = useDynTabs ( op ) ;
284
+ _api = api ;
285
+ return (
286
+ < div >
287
+ < Tablist > </ Tablist >
288
+ < Panellist > </ Panellist >
289
+ </ div >
290
+ ) ;
291
+ } ;
292
+ render ( < App > </ App > , container ) ;
293
+ } ) ;
294
+ return act ( ( ) => {
295
+ try {
296
+ _api . close ( ) ;
297
+ _api . close ( undefined ) ;
298
+ } catch ( er ) {
299
+ expect ( _api . getCopyData ( ) . selectedTabID === '1' ) . toBe ( true ) ;
300
+ expect ( op . onChange . mock . calls . length === 0 ) . toBe ( true ) ;
301
+ expect ( op . onInit . mock . calls . length === 1 ) . toBe ( true ) ;
302
+ }
303
+ return _api . close ( null ) . then ( result => {
304
+ expect ( op . onChange . mock . calls . length === 0 ) . toBe ( true ) ;
305
+ expect ( op . onInit . mock . calls . length === 2 ) . toBe ( true ) ;
306
+ expect ( _api . getCopyData ( ) . openTabIDs . length === 2 ) . toBe ( true ) ;
307
+ } ) ;
308
+ } ) ;
309
+ } ) ;
310
+ test ( 'open a tab twice' , ( ) => {
311
+ let _api ;
312
+ expect . assertions ( 4 ) ;
313
+ act ( ( ) => {
314
+ const App = function ( props ) {
315
+ const [ Tablist , Panellist , api ] = useDynTabs ( op ) ;
316
+ _api = api ;
317
+ return (
318
+ < div >
319
+ < Tablist > </ Tablist >
320
+ < Panellist > </ Panellist >
321
+ </ div >
322
+ ) ;
323
+ } ;
324
+ render ( < App > </ App > , container ) ;
325
+ } ) ;
326
+ return act ( ( ) => {
327
+ return _api . open ( op . tabs [ 0 ] ) . then ( result => {
328
+ expect ( result . hasOwnProperty ( 'currentData' ) && result . hasOwnProperty ( 'instance' ) ) . toBe ( true ) ;
329
+ expect ( op . onChange . mock . calls . length === 0 ) . toBe ( true ) ;
330
+ expect ( op . onInit . mock . calls . length === 2 ) . toBe ( true ) ;
331
+ expect ( _api . getCopyData ( ) . openTabIDs . length === 2 ) . toBe ( true ) ;
332
+ } ) ;
333
+ } ) ;
334
+ } ) ;
335
+ test ( 'calling open method with falsy value as a parameter' , ( ) => {
336
+ let _api ;
337
+ expect . assertions ( 3 ) ;
338
+ act ( ( ) => {
339
+ const App = function ( props ) {
340
+ const [ Tablist , Panellist , api ] = useDynTabs ( op ) ;
341
+ _api = api ;
342
+ return (
343
+ < div >
344
+ < Tablist > </ Tablist >
345
+ < Panellist > </ Panellist >
346
+ </ div >
347
+ ) ;
348
+ } ;
349
+ render ( < App > </ App > , container ) ;
350
+ } ) ;
351
+ try {
352
+ _api . open ( ) ;
353
+ _api . open ( undefined ) ;
354
+ _api . open ( null ) ;
355
+ } catch ( er ) {
356
+ expect ( _api . getCopyData ( ) . openTabIDs . length === 2 ) . toBe ( true ) ;
357
+ expect ( op . onChange . mock . calls . length === 0 ) . toBe ( true ) ;
358
+ expect ( op . onInit . mock . calls . length === 1 ) . toBe ( true ) ;
359
+ }
360
+ } ) ;
172
361
} ) ;
173
362
describe ( "calling some action inside the events options" , ( ) => {
174
363
let _api ;
0 commit comments