@@ -393,6 +393,42 @@ export function run() {
393393 expect ( leavingView . willLeave ) . toHaveBeenCalled ( ) ;
394394 } ) ;
395395
396+ it ( 'should not call willEnter when the leaving view has fireOtherLifecycles not true' , ( ) => {
397+ let enteringView = new ViewController ( Page1 ) ;
398+ let leavingView = new ViewController ( Page2 ) ;
399+ var navOptions : NavOptions = { } ;
400+ var done = ( ) => { } ;
401+ nav . _beforeTrans = ( ) => { } ; //prevent running beforeTrans for tests
402+
403+ spyOn ( enteringView , 'willEnter' ) ;
404+ spyOn ( leavingView , 'willLeave' ) ;
405+
406+ leavingView . fireOtherLifecycles = false ;
407+
408+ nav . _postRender ( 1 , enteringView , leavingView , false , navOptions , done ) ;
409+
410+ expect ( enteringView . willEnter ) . not . toHaveBeenCalled ( ) ;
411+ expect ( leavingView . willLeave ) . toHaveBeenCalled ( ) ;
412+ } ) ;
413+
414+ it ( 'should not call willLeave when the entering view has fireOtherLifecycles not true' , ( ) => {
415+ let enteringView = new ViewController ( Page1 ) ;
416+ let leavingView = new ViewController ( Page2 ) ;
417+ var navOptions : NavOptions = { } ;
418+ var done = ( ) => { } ;
419+ nav . _beforeTrans = ( ) => { } ; //prevent running beforeTrans for tests
420+
421+ spyOn ( enteringView , 'willEnter' ) ;
422+ spyOn ( leavingView , 'willLeave' ) ;
423+
424+ enteringView . fireOtherLifecycles = false ;
425+
426+ nav . _postRender ( 1 , enteringView , leavingView , false , navOptions , done ) ;
427+
428+ expect ( enteringView . willEnter ) . toHaveBeenCalled ( ) ;
429+ expect ( leavingView . willLeave ) . not . toHaveBeenCalled ( ) ;
430+ } ) ;
431+
396432 it ( 'should not call willLeave on leaving view when it is being preloaded' , ( ) => {
397433 let enteringView = new ViewController ( Page1 ) ;
398434 let leavingView = new ViewController ( Page2 ) ;
@@ -495,6 +531,46 @@ export function run() {
495531 expect ( doneCalled ) . toBe ( true ) ;
496532 } ) ;
497533
534+ it ( 'should not call didLeave when enteringView set fireOtherLifecycles to false' , ( ) => {
535+ let enteringView = new ViewController ( ) ;
536+ let leavingView = new ViewController ( ) ;
537+ let navOpts : NavOptions = { } ;
538+ let hasCompleted = true ;
539+ let doneCalled = false ;
540+ let done = ( ) => { doneCalled = true ; }
541+
542+ enteringView . fireOtherLifecycles = false ;
543+
544+ spyOn ( enteringView , 'didEnter' ) ;
545+ spyOn ( leavingView , 'didLeave' ) ;
546+
547+ nav . _afterTrans ( enteringView , leavingView , navOpts , hasCompleted , done ) ;
548+
549+ expect ( enteringView . didEnter ) . toHaveBeenCalled ( ) ;
550+ expect ( leavingView . didLeave ) . not . toHaveBeenCalled ( ) ;
551+ expect ( doneCalled ) . toBe ( true ) ;
552+ } ) ;
553+
554+ it ( 'should not call didEnter when leavingView set fireOtherLifecycles to false' , ( ) => {
555+ let enteringView = new ViewController ( ) ;
556+ let leavingView = new ViewController ( ) ;
557+ let navOpts : NavOptions = { } ;
558+ let hasCompleted = true ;
559+ let doneCalled = false ;
560+ let done = ( ) => { doneCalled = true ; }
561+
562+ leavingView . fireOtherLifecycles = false ;
563+
564+ spyOn ( enteringView , 'didEnter' ) ;
565+ spyOn ( leavingView , 'didLeave' ) ;
566+
567+ nav . _afterTrans ( enteringView , leavingView , navOpts , hasCompleted , done ) ;
568+
569+ expect ( enteringView . didEnter ) . not . toHaveBeenCalled ( ) ;
570+ expect ( leavingView . didLeave ) . toHaveBeenCalled ( ) ;
571+ expect ( doneCalled ) . toBe ( true ) ;
572+ } ) ;
573+
498574 it ( 'should not call didEnter/didLeave when not hasCompleted' , ( ) => {
499575 let enteringView = new ViewController ( ) ;
500576 let leavingView = new ViewController ( ) ;
0 commit comments