From e26c425766fb8382377de03a05fd4296f6ec52e7 Mon Sep 17 00:00:00 2001 From: mattbryan9 Date: Thu, 22 Sep 2016 21:37:24 -0400 Subject: [PATCH] fix(navigation): move onWillDismiss and onDidDismiss, add unit tests --- src/navigation/test/view-controller.spec.ts | 34 ++++++++++++++++++++- src/navigation/view-controller.ts | 4 +-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/navigation/test/view-controller.spec.ts b/src/navigation/test/view-controller.spec.ts index fcc782cc7fc..f11d6f6b745 100644 --- a/src/navigation/test/view-controller.spec.ts +++ b/src/navigation/test/view-controller.spec.ts @@ -1,4 +1,4 @@ -import { mockView } from '../../util/mock-providers'; +import { mockNavController, mockView, mockViews } from '../../util/mock-providers'; describe('ViewController', () => { @@ -87,6 +87,38 @@ describe('ViewController', () => { }, 10000); }); + describe('willDismiss', () => { + it('should have data in the willDismiss', (done) => { + // arrange + let viewController = mockView(); + let navControllerBase = mockNavController(); + mockViews(navControllerBase, [viewController]); + + viewController.onWillDismiss((data: any) => { + expect(data).toEqual('willDismiss data'); + done(); + }); + + viewController.dismiss('willDismiss data'); + }, 10000); + }); + + describe('didDismiss', () => { + it('should have data in the didDismiss', (done) => { + // arrange + let viewController = mockView(); + let navControllerBase = mockNavController(); + mockViews(navControllerBase, [viewController]); + + viewController.onDidDismiss((data: any) => { + expect(data).toEqual('didDismiss data'); + done(); + }); + + viewController.dismiss('didDismiss data'); + }, 10000); + }); + afterEach(() => { if (subscription) { subscription.unsubscribe(); diff --git a/src/navigation/view-controller.ts b/src/navigation/view-controller.ts index 447dc27b7aa..9bf1dc9e471 100644 --- a/src/navigation/view-controller.ts +++ b/src/navigation/view-controller.ts @@ -179,7 +179,7 @@ export class ViewController { this._onWillDismiss && this._onWillDismiss(data, role); return this._nav.remove(this._nav.indexOf(this), 1, options).then(() => { this._onDidDismiss && this._onDidDismiss(data, role); - this._onWillDismiss = null; + this._onDidDismiss = null; return data; }); } @@ -515,7 +515,7 @@ export class ViewController { } } - this._nav = this._cmp = this.instance = this._cntDir = this._cntRef = this._hdrDir = this._ftrDir = this._nb = this._onDidDismiss = null; + this._nav = this._cmp = this.instance = this._cntDir = this._cntRef = this._hdrDir = this._ftrDir = this._nb = this._onWillDismiss = null; } /**