@@ -472,13 +472,43 @@ describe('ready function : ', () => {
472
472
expect ( op . onChange . mock . calls . length ) . toBe ( 0 ) ;
473
473
} ) ;
474
474
} ) ;
475
- describe ( 'initial events : ' , ( ) => {
476
- test ( 'onLoad and then onInit are called initially but onChange is not called ' , ( ) => {
475
+ describe ( 'onLoad callback : ' , ( ) => {
476
+ test ( 'onLoad callback should be called once time initially without any parameters ' , ( ) => {
477
477
renderApp ( ) ;
478
478
expect ( op . onLoad . mock . calls . length ) . toBe ( 1 ) ;
479
+ expect ( op . onLoad . mock . calls [ 0 ] . length ) . toBe ( 0 ) ;
480
+ act ( ( ) => {
481
+ instance . select ( '3' ) ;
482
+ instance . close ( '1' ) ;
483
+ instance . open ( { id : '3' } ) ;
484
+ instance . refresh ( ) ;
485
+ } ) ;
486
+ expect ( op . onLoad . mock . calls . length ) . toBe ( 1 ) ;
487
+ } ) ;
488
+ test ( 'checking context of onLoad callback' , ( ) => {
489
+ expect . assertions ( 2 ) ;
490
+ op . onLoad = jest . fn ( function ( ) {
491
+ expect ( Object . prototype . toString . call ( this ) ) . toBe ( '[object Object]' ) ;
492
+ expect ( this . hasOwnProperty ( 'getData' ) ) . toBe ( true ) ;
493
+ } ) ;
494
+ renderApp ( ) ;
495
+ op . onLoad = function ( ) { } ;
496
+ } ) ;
497
+ } ) ;
498
+ describe ( 'onInit callback : ' , ( ) => {
499
+ test ( 'onInit callback should be called initially without any parameters' , ( ) => {
500
+ renderApp ( ) ;
479
501
expect ( op . onInit . mock . calls . length ) . toBe ( 1 ) ;
480
- expect ( op . onChange . mock . calls . length ) . toBe ( 0 ) ;
481
- expect ( op . onLoad ) . toHaveBeenCalledBefore ( op . onInit ) ;
502
+ expect ( op . onInit . mock . calls [ 0 ] . length ) . toBe ( 0 ) ;
503
+ } ) ;
504
+ test ( 'checking context of onInit callback' , ( ) => {
505
+ expect . assertions ( 2 ) ;
506
+ op . onInit = jest . fn ( function ( ) {
507
+ expect ( Object . prototype . toString . call ( this ) ) . toBe ( '[object Object]' ) ;
508
+ expect ( this . hasOwnProperty ( 'getData' ) ) . toBe ( true ) ;
509
+ } ) ;
510
+ renderApp ( ) ;
511
+ op . onInit = function ( ) { } ;
482
512
} ) ;
483
513
} ) ;
484
514
describe ( 'onChange callback : ' , ( ) => {
@@ -499,6 +529,74 @@ describe('onChange callback : ', () => {
499
529
expect ( op . onChange . mock . calls [ 0 ] [ 0 ] . currentData ) . toEqual ( instance . getData ( ) ) ;
500
530
expect ( op . onChange . mock . calls [ 0 ] [ 0 ] . previousData ) . toEqual ( instance . getPreviousData ( ) ) ;
501
531
} ) ;
532
+ test ( 'it is not called initially' , ( ) => {
533
+ renderApp ( ) ;
534
+ expect ( op . onChange . mock . calls . length ) . toBe ( 0 ) ;
535
+ } ) ;
536
+ test ( 'onChange parameters should be immutable' , ( ) => {
537
+ renderApp ( ) ;
538
+ const onChange1 = jest . fn ( ( { currentData, previousData, closedTabIDs, openedTabIDs} ) => {
539
+ closedTabIDs . push ( '6' ) ;
540
+ openedTabIDs . push ( '6' ) ;
541
+ currentData . selectedTabID = '6' ;
542
+ previousData . selectedTabID = '6' ;
543
+ } ) ;
544
+ const onChange2 = jest . fn ( ( { currentData, previousData, closedTabIDs, openedTabIDs} ) => {
545
+ closedTabIDs . push ( '7' ) ;
546
+ openedTabIDs . push ( '7' ) ;
547
+ currentData . selectedTabID = '7' ;
548
+ previousData . selectedTabID = '7' ;
549
+ } ) ;
550
+ const onOpen = jest . fn ( ( ) => { } ) ;
551
+ const onClose = jest . fn ( ( ) => { } ) ;
552
+ const onSelect = jest . fn ( ( ) => { } ) ;
553
+ const onFirstSelect = jest . fn ( ( ) => { } ) ;
554
+ act ( ( ) => {
555
+ instance . setOption ( 'onChange' , ( { currentData, previousData, closedTabIDs, openedTabIDs} ) => {
556
+ closedTabIDs . push ( '5' ) ;
557
+ openedTabIDs . push ( '5' ) ;
558
+ currentData . selectedTabID = '5' ;
559
+ previousData . selectedTabID = '5' ;
560
+ } ) ;
561
+ instance . one ( 'onChange' , onChange1 ) ;
562
+ instance . on ( 'onChange' , onChange2 ) ;
563
+ instance . on ( 'onOpen' , onOpen ) ;
564
+ instance . on ( 'onClose' , onClose ) ;
565
+ instance . on ( 'onSelect' , onSelect ) ;
566
+ instance . on ( 'onFirstSelect' , onFirstSelect ) ;
567
+ instance . close ( '2' ) ;
568
+ instance . open ( { id : '3' } ) ;
569
+ instance . select ( '3' ) ;
570
+ } ) ;
571
+
572
+ expect ( onSelect . mock . calls [ 0 ] [ 0 ] ) . toEqual ( {
573
+ currentSelectedTabId : '3' ,
574
+ perviousSelectedTabId : '1' ,
575
+ previousSelectedTabId : '1' ,
576
+ } ) ;
577
+ expect ( onFirstSelect . mock . calls [ 0 ] [ 0 ] ) . toEqual ( {
578
+ currentSelectedTabId : '3' ,
579
+ previousSelectedTabId : '1' ,
580
+ } ) ;
581
+ expect ( onClose . mock . calls [ 0 ] [ 0 ] ) . toEqual ( [ '2' ] ) ;
582
+ expect ( onOpen . mock . calls [ 0 ] [ 0 ] ) . toEqual ( [ '3' ] ) ;
583
+ expect ( onChange2 . mock . calls [ 0 ] [ 0 ] ) . toEqual ( {
584
+ currentData : { selectedTabID : '3' , openTabIDs : [ '1' , '3' ] } ,
585
+ previousData : { selectedTabID : '1' , openTabIDs : [ '1' , '2' ] } ,
586
+ perviousData : { selectedTabID : '1' , openTabIDs : [ '1' , '2' ] } ,
587
+ closedTabIDs : [ '2' ] ,
588
+ openedTabIDs : [ '3' ] ,
589
+ } ) ;
590
+ } ) ;
591
+ test ( 'checking context of onChange callback' , ( ) => {
592
+ expect . assertions ( 2 ) ;
593
+ op . onChange = jest . fn ( function ( ) {
594
+ expect ( Object . prototype . toString . call ( this ) ) . toBe ( '[object Object]' ) ;
595
+ expect ( this . hasOwnProperty ( 'getData' ) ) . toBe ( true ) ;
596
+ } ) ;
597
+ renderApp ( ) ;
598
+ op . onChange = function ( ) { } ;
599
+ } ) ;
502
600
} ) ;
503
601
describe ( 'onSelect callback : ' , ( ) => {
504
602
test ( 'onSelect is called with {currentSelectedTabId,previousSelectedTabId,perviousSelectedTabId} object as a parameter' , ( ) => {
@@ -513,6 +611,41 @@ describe('onSelect callback : ', () => {
513
611
previousSelectedTabId : '1' ,
514
612
} ) ;
515
613
} ) ;
614
+ test ( 'it is not called initially' , ( ) => {
615
+ renderApp ( ) ;
616
+ expect ( op . onSelect . mock . calls . length ) . toBe ( 0 ) ;
617
+ } ) ;
618
+ test ( 'onSelect parameters should be immutable' , ( ) => {
619
+ renderApp ( ) ;
620
+ const onSelect1 = jest . fn ( ( param ) => {
621
+ param . previousSelectedTabId = 19 ;
622
+ } ) ;
623
+ const onSelect2 = jest . fn ( ( param ) => {
624
+ param . previousSelectedTabId = 20 ;
625
+ } ) ;
626
+ act ( ( ) => {
627
+ instance . setOption ( 'onSelect' , ( param ) => {
628
+ param . currentSelectedTabId = 10 ;
629
+ } ) ;
630
+ instance . on ( 'onSelect' , onSelect1 ) ;
631
+ instance . on ( 'onSelect' , onSelect2 ) ;
632
+ instance . select ( '2' ) ;
633
+ } ) ;
634
+ expect ( onSelect2 . mock . calls [ 0 ] [ 0 ] ) . toEqual ( {
635
+ currentSelectedTabId : '2' ,
636
+ perviousSelectedTabId : '1' ,
637
+ previousSelectedTabId : '1' ,
638
+ } ) ;
639
+ } ) ;
640
+ test ( 'checking context of onSelect callback' , ( ) => {
641
+ expect . assertions ( 2 ) ;
642
+ op . onSelect = jest . fn ( function ( ) {
643
+ expect ( Object . prototype . toString . call ( this ) ) . toBe ( '[object Object]' ) ;
644
+ expect ( this . hasOwnProperty ( 'getData' ) ) . toBe ( true ) ;
645
+ } ) ;
646
+ renderApp ( ) ;
647
+ op . onSelect = function ( ) { } ;
648
+ } ) ;
516
649
} ) ;
517
650
describe ( 'onFirstSelect callback : ' , ( ) => {
518
651
test ( 'it is not triggered initially' , ( ) => {
@@ -548,30 +681,6 @@ describe('onFirstSelect callback : ', () => {
548
681
previousSelectedTabId : '1' ,
549
682
} ) ;
550
683
} ) ;
551
- } ) ;
552
- describe ( 'callbacks should be called with immutable parameters : ' , ( ) => {
553
- test ( 'onSelect parameters should be immutable' , ( ) => {
554
- renderApp ( ) ;
555
- const onSelect1 = jest . fn ( ( param ) => {
556
- param . previousSelectedTabId = 19 ;
557
- } ) ;
558
- const onSelect2 = jest . fn ( ( param ) => {
559
- param . previousSelectedTabId = 20 ;
560
- } ) ;
561
- act ( ( ) => {
562
- instance . setOption ( 'onSelect' , ( param ) => {
563
- param . currentSelectedTabId = 10 ;
564
- } ) ;
565
- instance . on ( 'onSelect' , onSelect1 ) ;
566
- instance . on ( 'onSelect' , onSelect2 ) ;
567
- instance . select ( '2' ) ;
568
- } ) ;
569
- expect ( onSelect2 . mock . calls [ 0 ] [ 0 ] ) . toEqual ( {
570
- currentSelectedTabId : '2' ,
571
- perviousSelectedTabId : '1' ,
572
- previousSelectedTabId : '1' ,
573
- } ) ;
574
- } ) ;
575
684
test ( 'onFirstSelect parameters should be immutable' , ( ) => {
576
685
renderApp ( ) ;
577
686
const onFirstSelect1 = jest . fn ( ( param ) => {
@@ -593,6 +702,29 @@ describe('callbacks should be called with immutable parameters : ', () => {
593
702
previousSelectedTabId : '1' ,
594
703
} ) ;
595
704
} ) ;
705
+ test ( 'checking context of onFirstSelect callback' , ( ) => {
706
+ expect . assertions ( 2 ) ;
707
+ op . onFirstSelect = jest . fn ( function ( ) {
708
+ expect ( Object . prototype . toString . call ( this ) ) . toBe ( '[object Object]' ) ;
709
+ expect ( this . hasOwnProperty ( 'getData' ) ) . toBe ( true ) ;
710
+ } ) ;
711
+ renderApp ( ) ;
712
+ op . onFirstSelect = function ( ) { } ;
713
+ } ) ;
714
+ } ) ;
715
+ describe ( 'onOpen callback : ' , ( ) => {
716
+ test ( 'checking onOpen parameters' , ( ) => {
717
+ renderApp ( ) ;
718
+ act ( ( ) => {
719
+ instance . open ( { id : '3' } ) ;
720
+ } ) ;
721
+ expect ( op . onOpen . mock . calls . length ) . toBe ( 1 ) ;
722
+ expect ( op . onOpen . mock . calls [ 0 ] [ 0 ] ) . toEqual ( [ '3' ] ) ;
723
+ } ) ;
724
+ test ( 'it is not called initially' , ( ) => {
725
+ renderApp ( ) ;
726
+ expect ( op . onOpen . mock . calls . length ) . toBe ( 0 ) ;
727
+ } ) ;
596
728
test ( 'onOpen parameters should be immutable' , ( ) => {
597
729
renderApp ( ) ;
598
730
const onOpen1 = jest . fn ( ( openedTabIDs ) => {
@@ -611,6 +743,29 @@ describe('callbacks should be called with immutable parameters : ', () => {
611
743
} ) ;
612
744
expect ( onOpen2 . mock . calls [ 0 ] [ 0 ] ) . toEqual ( [ '3' ] ) ;
613
745
} ) ;
746
+ test ( 'checking context of onOpen callback' , ( ) => {
747
+ expect . assertions ( 2 ) ;
748
+ op . onOpen = jest . fn ( function ( ) {
749
+ expect ( Object . prototype . toString . call ( this ) ) . toBe ( '[object Object]' ) ;
750
+ expect ( this . hasOwnProperty ( 'getData' ) ) . toBe ( true ) ;
751
+ } ) ;
752
+ renderApp ( ) ;
753
+ op . onOpen = function ( ) { } ;
754
+ } ) ;
755
+ } ) ;
756
+ describe ( 'onClose callback : ' , ( ) => {
757
+ test ( 'checking onClose parameters' , ( ) => {
758
+ renderApp ( ) ;
759
+ act ( ( ) => {
760
+ instance . close ( '2' ) ;
761
+ } ) ;
762
+ expect ( op . onClose . mock . calls . length ) . toBe ( 1 ) ;
763
+ expect ( op . onClose . mock . calls [ 0 ] [ 0 ] ) . toEqual ( [ '2' ] ) ;
764
+ } ) ;
765
+ test ( 'it is not called initially' , ( ) => {
766
+ renderApp ( ) ;
767
+ expect ( op . onClose . mock . calls . length ) . toBe ( 0 ) ;
768
+ } ) ;
614
769
test ( 'onClose parameters should be immutable' , ( ) => {
615
770
renderApp ( ) ;
616
771
const onClose1 = jest . fn ( ( closedTabIDs ) => {
@@ -629,59 +784,13 @@ describe('callbacks should be called with immutable parameters : ', () => {
629
784
} ) ;
630
785
expect ( onClose2 . mock . calls [ 0 ] [ 0 ] ) . toEqual ( [ '2' ] ) ;
631
786
} ) ;
632
- test ( 'onChange parameters should be immutable' , ( ) => {
633
- renderApp ( ) ;
634
- const onChange1 = jest . fn ( ( { currentData, previousData, closedTabIDs, openedTabIDs} ) => {
635
- closedTabIDs . push ( '6' ) ;
636
- openedTabIDs . push ( '6' ) ;
637
- currentData . selectedTabID = '6' ;
638
- previousData . selectedTabID = '6' ;
639
- } ) ;
640
- const onChange2 = jest . fn ( ( { currentData, previousData, closedTabIDs, openedTabIDs} ) => {
641
- closedTabIDs . push ( '7' ) ;
642
- openedTabIDs . push ( '7' ) ;
643
- currentData . selectedTabID = '7' ;
644
- previousData . selectedTabID = '7' ;
645
- } ) ;
646
- const onOpen = jest . fn ( ( ) => { } ) ;
647
- const onClose = jest . fn ( ( ) => { } ) ;
648
- const onSelect = jest . fn ( ( ) => { } ) ;
649
- const onFirstSelect = jest . fn ( ( ) => { } ) ;
650
- act ( ( ) => {
651
- instance . setOption ( 'onChange' , ( { currentData, previousData, closedTabIDs, openedTabIDs} ) => {
652
- closedTabIDs . push ( '5' ) ;
653
- openedTabIDs . push ( '5' ) ;
654
- currentData . selectedTabID = '5' ;
655
- previousData . selectedTabID = '5' ;
656
- } ) ;
657
- instance . one ( 'onChange' , onChange1 ) ;
658
- instance . on ( 'onChange' , onChange2 ) ;
659
- instance . on ( 'onOpen' , onOpen ) ;
660
- instance . on ( 'onClose' , onClose ) ;
661
- instance . on ( 'onSelect' , onSelect ) ;
662
- instance . on ( 'onFirstSelect' , onFirstSelect ) ;
663
- instance . close ( '2' ) ;
664
- instance . open ( { id : '3' } ) ;
665
- instance . select ( '3' ) ;
666
- } ) ;
667
-
668
- expect ( onSelect . mock . calls [ 0 ] [ 0 ] ) . toEqual ( {
669
- currentSelectedTabId : '3' ,
670
- perviousSelectedTabId : '1' ,
671
- previousSelectedTabId : '1' ,
672
- } ) ;
673
- expect ( onFirstSelect . mock . calls [ 0 ] [ 0 ] ) . toEqual ( {
674
- currentSelectedTabId : '3' ,
675
- previousSelectedTabId : '1' ,
676
- } ) ;
677
- expect ( onClose . mock . calls [ 0 ] [ 0 ] ) . toEqual ( [ '2' ] ) ;
678
- expect ( onOpen . mock . calls [ 0 ] [ 0 ] ) . toEqual ( [ '3' ] ) ;
679
- expect ( onChange2 . mock . calls [ 0 ] [ 0 ] ) . toEqual ( {
680
- currentData : { selectedTabID : '3' , openTabIDs : [ '1' , '3' ] } ,
681
- previousData : { selectedTabID : '1' , openTabIDs : [ '1' , '2' ] } ,
682
- perviousData : { selectedTabID : '1' , openTabIDs : [ '1' , '2' ] } ,
683
- closedTabIDs : [ '2' ] ,
684
- openedTabIDs : [ '3' ] ,
787
+ test ( 'checking context of onClose callback' , ( ) => {
788
+ expect . assertions ( 2 ) ;
789
+ op . onClose = jest . fn ( function ( ) {
790
+ expect ( Object . prototype . toString . call ( this ) ) . toBe ( '[object Object]' ) ;
791
+ expect ( this . hasOwnProperty ( 'getData' ) ) . toBe ( true ) ;
685
792
} ) ;
793
+ renderApp ( ) ;
794
+ op . onClose = function ( ) { } ;
686
795
} ) ;
687
796
} ) ;
0 commit comments