@@ -7,25 +7,33 @@ import {
7
7
import { HomePage } from './home' ;
8
8
import { NavControllerMock , NavParamsMock , AlertControllerMock } from 'ionic-mocks' ;
9
9
import { ProjectProvider } from "../../providers/project/project" ;
10
- import { instance , mock } from "ts-mockito" ;
11
10
import { PlatformMock } from "../../../test-config/mocks-ionic" ;
11
+ import { Observable } from "rxjs" ;
12
+ import { Project } from "../../model/project" ;
13
+ import { Validator } from "validator.ts/Validator" ;
12
14
13
15
describe ( 'HomePage' , ( ) => {
14
16
let fixture ;
15
- let component ;
17
+ let component : HomePage ;
18
+ let projectProvider = < ProjectProvider > { } ;
19
+ let navController = NavControllerMock . instance ( ) ;
20
+ let alertController = AlertControllerMock . instance ( ) ;
21
+ let navParams = NavParamsMock . instance ( ) ;
16
22
17
23
beforeEach ( async ( ( ) => {
24
+ projectProvider = < ProjectProvider > { } ;
25
+
18
26
TestBed . configureTestingModule ( {
19
27
declarations : [ HomePage ] ,
20
28
imports : [
21
29
IonicPageModule . forChild ( HomePage )
22
30
] ,
23
31
providers : [
24
32
//mocking since they are actual dependency of the Homepage component
25
- { provide : NavController , useValue : NavControllerMock . instance ( ) } ,
26
- { provide : NavParams , useValue : NavParamsMock . instance ( ) } ,
27
- { provide : ProjectProvider , useValue : instance ( mock ( ProjectProvider ) ) } ,
28
- { provide : AlertController , useValue : AlertControllerMock . instance ( ) } ,
33
+ { provide : NavController , useValue : navController } ,
34
+ { provide : NavParams , useValue : navParams } ,
35
+ { provide : ProjectProvider , useValue : projectProvider } ,
36
+ { provide : AlertController , useValue : alertController } ,
29
37
30
38
//test fixture that needs to be mock
31
39
{ provide : Platform , useClass : PlatformMock } ,
@@ -49,4 +57,29 @@ describe('HomePage', () => {
49
57
it ( 'should create a valid instance of HomePage' , ( ) => {
50
58
expect ( component instanceof HomePage ) . toBe ( true ) ;
51
59
} ) ;
60
+
61
+ it ( 'should show error message when project is not valid' , ( ) => {
62
+ component . saveOrUpdateProject ( ) ;
63
+ expect ( alertController . create ) . toHaveBeenCalled ( ) ;
64
+ } ) ;
65
+
66
+ it ( 'should have an instance of project when passed to params is null' , ( ) => {
67
+ expect ( component . project ) . toBeTruthy ( ) ;
68
+ } ) ;
69
+
70
+ it ( 'should have shown an alert message when provider throws error' , ( ) => {
71
+ projectProvider . saveOrUpdate = ( p : Project ) => Observable . throw ( "some errors" ) ;
72
+ expect ( alertController . create ) . toHaveBeenCalled ( ) ;
73
+ } ) ;
74
+
75
+ // it ('should go back when saving a valid project', () => {
76
+ // let validator = new Validator();
77
+ // let errors = validator.validate(this.project);
78
+ // component.project.name = "test";
79
+ // expect(errors.length).toEqual(0);
80
+ //
81
+ // projectProvider.saveOrUpdate = (p: Project) => Observable.of(component.project);
82
+ // expect(alertController.create).toHaveBeenCalledTimes(0);
83
+ // expect(navController.pop).toHaveBeenCalled();
84
+ // });
52
85
} ) ;
0 commit comments