From 0d60a0f5d59e73540a8313da9bb7d56b78f81fb3 Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Fri, 19 Feb 2016 10:40:44 -0600 Subject: [PATCH] test(NavController): add cleanup tests --- .../nav/test/nav-controller.spec.ts | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/ionic/components/nav/test/nav-controller.spec.ts b/ionic/components/nav/test/nav-controller.spec.ts index ae907c73ea..0ceff3f126 100644 --- a/ionic/components/nav/test/nav-controller.spec.ts +++ b/ionic/components/nav/test/nav-controller.spec.ts @@ -573,6 +573,86 @@ export function run() { expect(leavingView.state).toBe(STATE_ACTIVE); }); + it('should run cleanup when most recent transition and has completed', () => { + let enteringView = new ViewController(Page1); + enteringView.state = STATE_TRANS_ENTER; + let leavingView = new ViewController(Page2); + leavingView.state = STATE_TRANS_LEAVE; + let hasCompleted = true; + + spyOn(nav, '_cleanup'); + + nav._transIds = 1; + + nav._transFinish(1, enteringView, leavingView, 'back', hasCompleted); + + expect(nav._cleanup).toHaveBeenCalled() + }); + + it('should not run cleanup when most not recent transition', () => { + let enteringView = new ViewController(Page1); + enteringView.state = STATE_TRANS_ENTER; + let leavingView = new ViewController(Page2); + leavingView.state = STATE_TRANS_LEAVE; + let hasCompleted = true; + + spyOn(nav, '_cleanup'); + + nav._transIds = 1; + + nav._transFinish(2, enteringView, leavingView, 'back', hasCompleted); + + expect(nav._cleanup).not.toHaveBeenCalled() + }); + + it('should not run cleanup when it hasnt completed transition, but is the most recent', () => { + let enteringView = new ViewController(Page1); + enteringView.state = STATE_TRANS_ENTER; + let leavingView = new ViewController(Page2); + leavingView.state = STATE_TRANS_LEAVE; + let hasCompleted = false; + + spyOn(nav, '_cleanup'); + + nav._transIds = 1; + + nav._transFinish(1, enteringView, leavingView, 'back', hasCompleted); + + expect(nav._cleanup).not.toHaveBeenCalled() + }); + + it('should set transitioning is over when most recent transition finishes', () => { + let enteringView = new ViewController(Page1); + enteringView.state = STATE_TRANS_ENTER; + let leavingView = new ViewController(Page2); + leavingView.state = STATE_TRANS_LEAVE; + let hasCompleted = true; + + spyOn(nav, 'setTransitioning'); + + nav._transIds = 1; + + nav._transFinish(1, enteringView, leavingView, 'back', hasCompleted); + + expect(nav.setTransitioning).toHaveBeenCalledWith(false); + }); + + it('should set transitioning is not over if its not the most recent transition', () => { + let enteringView = new ViewController(Page1); + enteringView.state = STATE_TRANS_ENTER; + let leavingView = new ViewController(Page2); + leavingView.state = STATE_TRANS_LEAVE; + let hasCompleted = true; + + spyOn(nav, 'setTransitioning'); + + nav._transIds = 2; + + nav._transFinish(1, enteringView, leavingView, 'back', hasCompleted); + + expect(nav.setTransitioning).not.toHaveBeenCalled(); + }); + }); describe('_insert', () => {