@@ -834,6 +834,18 @@ describe('NavigationController', () => {
834834 } ) ;
835835 return e ;
836836 } ;
837+ let expectCallsBeforeTransition = ( e ) => {
838+ expect ( e . prevView . willHide . calledOnce ) . to . be . true ;
839+ expect ( e . nextView . willShow . calledOnce ) . to . be . true ;
840+ expect ( e . prevView . didHide . calledOnce ) . to . be . false ;
841+ expect ( e . nextView . didShow . calledOnce ) . to . be . false ;
842+ expect ( e . prevView . willHide . calledBefore ( e . nextView . willShow ) ) . to . be . true ;
843+ } ;
844+ let expectCallsAfterTransition = ( e ) => {
845+ expect ( e . prevView . didHide . calledOnce ) . to . be . true ;
846+ expect ( e . nextView . didShow . calledOnce ) . to . be . true ;
847+ expect ( e . prevView . didHide . calledBefore ( e . nextView . didShow ) ) . to . be . true ;
848+ } ;
837849 describe ( '#__pushView' , ( ) => {
838850 beforeEach ( done => {
839851 requestAnimationFrame ( ( ) => {
@@ -842,32 +854,24 @@ describe('NavigationController', () => {
842854 } ) ;
843855 it ( 'calls events with a "none" transition' , ( done ) => {
844856 const e = stubLifecycleEvents ( ( ) => {
845- expect ( e . prevView . willHide . calledOnce ) . to . be . true ;
846- expect ( e . nextView . willShow . calledOnce ) . to . be . true ;
847- expect ( e . prevView . didHide . calledOnce ) . to . be . false ;
848- expect ( e . nextView . didShow . calledOnce ) . to . be . false ;
857+ expectCallsBeforeTransition ( e ) ;
849858 } ) ;
850859 controller . __pushView ( < ViewB /> , {
851860 transition : Transition . type . NONE ,
852861 onComplete ( ) {
853- expect ( e . prevView . didHide . calledOnce ) . to . be . true ;
854- expect ( e . nextView . didShow . calledOnce ) . to . be . true ;
862+ expectCallsAfterTransition ( e ) ;
855863 done ( ) ;
856864 }
857865 } ) ;
858866 } ) ;
859867 it ( 'calls events with a built-in spring animation' , ( done ) => {
860868 const e = stubLifecycleEvents ( ( ) => {
861- expect ( e . prevView . willHide . calledOnce ) . to . be . true ;
862- expect ( e . nextView . willShow . calledOnce ) . to . be . true ;
863- expect ( e . prevView . didHide . calledOnce ) . to . be . false ;
864- expect ( e . nextView . didShow . calledOnce ) . to . be . false ;
869+ expectCallsBeforeTransition ( e ) ;
865870 } ) ;
866871 controller . __pushView ( < ViewB /> , {
867872 transition : Transition . type . PUSH_LEFT ,
868873 onComplete ( ) {
869- expect ( e . prevView . didHide . calledOnce ) . to . be . true ;
870- expect ( e . nextView . didShow . calledOnce ) . to . be . true ;
874+ expectCallsAfterTransition ( e ) ;
871875 done ( ) ;
872876 }
873877 } ) ;
@@ -884,32 +888,58 @@ describe('NavigationController', () => {
884888 } ) ;
885889 it ( 'calls events with a "none" transition' , ( done ) => {
886890 const e = stubLifecycleEvents ( ( ) => {
887- expect ( e . prevView . willHide . calledOnce ) . to . be . true ;
888- expect ( e . nextView . willShow . calledOnce ) . to . be . true ;
889- expect ( e . prevView . didHide . calledOnce ) . to . be . false ;
890- expect ( e . nextView . didShow . calledOnce ) . to . be . false ;
891+ expectCallsBeforeTransition ( e ) ;
891892 } ) ;
892893 controller . __popView ( {
893894 transition : Transition . type . NONE ,
894895 onComplete ( ) {
895- expect ( e . prevView . didHide . calledOnce ) . to . be . true ;
896- expect ( e . nextView . didShow . calledOnce ) . to . be . true ;
896+ expectCallsAfterTransition ( e ) ;
897897 done ( ) ;
898898 }
899899 } ) ;
900900 } ) ;
901901 it ( 'calls events with a built-in spring animation' , ( done ) => {
902902 const e = stubLifecycleEvents ( ( ) => {
903- expect ( e . prevView . willHide . calledOnce ) . to . be . true ;
904- expect ( e . nextView . willShow . calledOnce ) . to . be . true ;
905- expect ( e . prevView . didHide . calledOnce ) . to . be . false ;
906- expect ( e . nextView . didShow . calledOnce ) . to . be . false ;
903+ expectCallsBeforeTransition ( e ) ;
907904 } ) ;
908905 controller . __popView ( {
909906 transition : Transition . type . PUSH_LEFT ,
910907 onComplete ( ) {
911- expect ( e . prevView . didHide . calledOnce ) . to . be . true ;
912- expect ( e . nextView . didShow . calledOnce ) . to . be . true ;
908+ expectCallsAfterTransition ( e ) ;
909+ done ( ) ;
910+ }
911+ } ) ;
912+ } ) ;
913+ } ) ;
914+ describe ( '#__popToRootView' , ( ) => {
915+ beforeEach ( done => {
916+ controller = renderIntoDocument (
917+ < NavigationController views = { [ < ViewA /> , < ViewB /> , < ViewC /> ] } />
918+ ) ;
919+ requestAnimationFrame ( ( ) => {
920+ done ( ) ;
921+ } ) ;
922+ } ) ;
923+ it ( 'calls events with a "none" transition' , ( done ) => {
924+ const e = stubLifecycleEvents ( ( ) => {
925+ expectCallsBeforeTransition ( e ) ;
926+ } ) ;
927+ controller . __popToRootView ( {
928+ transition : Transition . type . NONE ,
929+ onComplete ( ) {
930+ expectCallsAfterTransition ( e ) ;
931+ done ( ) ;
932+ }
933+ } ) ;
934+ } ) ;
935+ it ( 'calls events with a built-in spring animation' , ( done ) => {
936+ const e = stubLifecycleEvents ( ( ) => {
937+ expectCallsBeforeTransition ( e ) ;
938+ } ) ;
939+ controller . __popToRootView ( {
940+ transition : Transition . type . PUSH_LEFT ,
941+ onComplete ( ) {
942+ expectCallsAfterTransition ( e ) ;
913943 done ( ) ;
914944 }
915945 } ) ;
0 commit comments