Skip to content

Commit 6e88701

Browse files
enstainStone Lasley
authored and
Stone Lasley
committed
Handling onDidDismiss event in Modal and Alert components (stonelasley#26)
* fire onDidDismiss callback for alert and modal * static instance for nav controller; refactor view controller return static instance
1 parent e800189 commit 6e88701

File tree

4 files changed

+110
-76
lines changed

4 files changed

+110
-76
lines changed

src/angular/alert.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
export class AlertMock {
22
public static instance(): any {
3-
let instance = jasmine.createSpyObj('Alert', ['present', 'dismiss']);
3+
let _dismissCallback: Function;
4+
let instance = jasmine.createSpyObj('Alert', ['present', 'dismiss', 'onDidDismiss']);
45
instance.present.and.returnValue(Promise.resolve());
5-
instance.dismiss.and.returnValue(Promise.resolve());
6+
7+
instance.dismiss.and.callFake(() => {
8+
_dismissCallback();
9+
return Promise.resolve();
10+
});
11+
12+
instance.onDidDismiss.and.callFake((callback: Function) => {
13+
_dismissCallback = callback;
14+
});
615

716
return instance;
817
}

src/angular/modal.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
export class ModalMock {
22
public static instance(): any {
3+
let _dismissCallback: Function;
34
let instance = jasmine.createSpyObj('Modal', ['present', 'dismiss', 'onDidDismiss']);
45
instance.present.and.returnValue(Promise.resolve());
5-
instance.dismiss.and.returnValue(Promise.resolve());
6+
7+
instance.dismiss.and.callFake(() => {
8+
_dismissCallback();
9+
return Promise.resolve();
10+
});
11+
12+
instance.onDidDismiss.and.callFake((callback: Function) => {
13+
_dismissCallback = callback;
14+
});
615

716
return instance;
817
}

src/angular/nav-controller.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import {Observable} from 'rxjs/Observable';
22

33
export class NavControllerMock {
4+
private static staticInstance: null;
5+
46
public static instance(): any {
7+
if(NavControllerMock.staticInstance !== null) {
8+
return NavControllerMock.staticInstance;
9+
}
10+
511
let instance: any = jasmine.createSpyObj('NavController', [
612
'goToRoot',
713
'initPane',
@@ -88,6 +94,8 @@ export class NavControllerMock {
8894
instance.viewWillLeave = Observable.of();
8995
instance.viewWillUnload = Observable.of();
9096

91-
return instance;
97+
NavControllerMock.staticInstance = instance;
98+
99+
return NavControllerMock.instance();
92100
}
93101
}

src/angular/view-controller.ts

Lines changed: 80 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,97 @@
11
import {Observable} from 'rxjs';
22
import {NavParamsMock} from './nav-params';
3+
import {NavControllerMock} from './nav-controller';
34

45
export class ViewControllerMock {
6+
private static staticInstance: null;
57

68
public static instance(): any {
7-
let instance = jasmine.createSpyObj('ViewController', [
8-
'willEnter',
9-
'didEnter',
10-
'willLeave',
11-
'didLeave',
12-
'willUnload',
13-
'didUnload',
14-
'dismiss',
15-
'onDidDismiss',
16-
'onWillDismiss',
17-
'enableBack',
18-
'isFirst',
19-
'isLast',
20-
'pageRef',
21-
'getContent',
22-
'contentRef',
23-
'hasNavbar',
24-
'index',
25-
'subscribe',
26-
'getNav',
27-
'getIONContent',
28-
'writeReady',
29-
'readReady',
30-
'setBackButtonText',
31-
'showBackButton',
32-
'_setHeader',
33-
'_setNavbar',
34-
'_setNav',
35-
'_setInstance',
36-
'_setIONContent',
37-
'_setContent',
38-
'_setContentRef',
39-
'_setFooter',
40-
'_setIONContentRef'
41-
]);
9+
if (ViewControllerMock.staticInstance !== null) {
10+
return ViewControllerMock.staticInstance;
11+
}
4212

43-
instance.willEnter.and.returnValue(Observable.of({}));
44-
instance.didEnter.and.returnValue(Observable.of({}));
45-
instance.willLeave.and.returnValue(Observable.of({}));
46-
instance.didLeave.and.returnValue(Observable.of({}));
47-
instance.willUnload.and.returnValue(Observable.of({}));
48-
instance.didUnload.and.returnValue(Observable.of({}));
49-
instance.dismiss.and.returnValue(Promise.resolve());
50-
instance.onDidDismiss.and.returnValue(Promise.resolve());
51-
instance.onWillDismiss.and.returnValue(Promise.resolve());
52-
instance.enableBack.and.returnValue(true);
53-
instance.isFirst.and.returnValue(false);
54-
instance.isLast.and.returnValue(false);
55-
instance.pageRef.and.returnValue({});
56-
instance.getContent.and.returnValue({});
57-
instance.contentRef.and.returnValue(Promise.resolve());
58-
instance.hasNavbar.and.returnValue(true);
59-
instance.index.and.returnValue(true);
60-
instance.subscribe.and.returnValue(Observable.of({}));
61-
instance.getNav.and.returnValue({});
62-
instance.getIONContent.and.returnValue({});
13+
let instance = jasmine.createSpyObj('ViewController', [
14+
'willEnter',
15+
'didEnter',
16+
'willLeave',
17+
'didLeave',
18+
'willUnload',
19+
'didUnload',
20+
'dismiss',
21+
'onDidDismiss',
22+
'onWillDismiss',
23+
'enableBack',
24+
'isFirst',
25+
'isLast',
26+
'pageRef',
27+
'getContent',
28+
'contentRef',
29+
'hasNavbar',
30+
'index',
31+
'subscribe',
32+
'getNav',
33+
'getIONContent',
34+
'writeReady',
35+
'readReady',
36+
'setBackButtonText',
37+
'showBackButton',
38+
'_setHeader',
39+
'_setNavbar',
40+
'_setNav',
41+
'_setInstance',
42+
'_setIONContent',
43+
'_setContent',
44+
'_setContentRef',
45+
'_setFooter',
46+
'_setIONContentRef'
47+
]);
6348

64-
instance['writeReady'] = {
65-
emit(): void {
49+
instance.willEnter.and.returnValue(Observable.of({}));
50+
instance.didEnter.and.returnValue(Observable.of({}));
51+
instance.willLeave.and.returnValue(Observable.of({}));
52+
instance.didLeave.and.returnValue(Observable.of({}));
53+
instance.willUnload.and.returnValue(Observable.of({}));
54+
instance.didUnload.and.returnValue(Observable.of({}));
55+
instance.dismiss.and.returnValue(Promise.resolve());
56+
instance.onDidDismiss.and.returnValue(Promise.resolve());
57+
instance.onWillDismiss.and.returnValue(Promise.resolve());
58+
instance.enableBack.and.returnValue(true);
59+
instance.isFirst.and.returnValue(false);
60+
instance.isLast.and.returnValue(false);
61+
instance.pageRef.and.returnValue({});
62+
instance.getContent.and.returnValue({});
63+
instance.contentRef.and.returnValue(Promise.resolve());
64+
instance.hasNavbar.and.returnValue(true);
65+
instance.index.and.returnValue(true);
66+
instance.subscribe.and.returnValue(Observable.of({}));
67+
instance.getNav.and.returnValue(NavControllerMock.instance());
68+
instance.getIONContent.and.returnValue({});
6669

67-
},
68-
subscribe(): any {
70+
instance['writeReady'] = {
71+
emit(): void {
6972

70-
}
71-
};
73+
},
74+
subscribe(): any {
7275

73-
instance['readReady'] = {
74-
emit(): void {
76+
}
77+
};
7578

76-
},
77-
subscribe(): any {
79+
instance['readReady'] = {
80+
emit(): void {
7881

79-
}
80-
};
82+
},
83+
subscribe(): any {
8184

82-
instance['component'] = {};
83-
instance['data'] = NavParamsMock.instance();
84-
instance['instance'] = {};
85-
instance['id'] = '';
85+
}
86+
};
8687

87-
return instance;
88+
instance['component'] = {};
89+
instance['data'] = NavParamsMock.instance();
90+
instance['instance'] = {};
91+
instance['id'] = '';
92+
93+
ViewControllerMock.staticInstance = instance;
94+
95+
return ViewControllerMock.instance();
8896
}
8997
}

0 commit comments

Comments
 (0)