Skip to content

Commit

Permalink
Centralise boilerplate for configuring an ionic component
Browse files Browse the repository at this point in the history
  • Loading branch information
lathonez committed Oct 15, 2016
1 parent 7b1a80c commit c7e9b57
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 17 deletions.
20 changes: 3 additions & 17 deletions src/pages/page2/page2.spec.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,11 @@
import { ComponentFixture, TestBed, async } from '@angular/core/testing';
import { App, MenuController, NavController, Platform, Config, Keyboard, Form, IonicModule } from 'ionic-angular';
import { ConfigMock, FormMock, NavMock, PlatformMock } from '../../../test/mocks';
import { TestUtils } from '../../test';

import { Page2 } from './page2';

describe('Pages: Page2', () => {
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [
Page2,
],
providers: [
{provide: App, useClass: ConfigMock},
{provide: Config, useClass: ConfigMock},
{provide: Form, useClass: FormMock},
{provide: Keyboard, useClass: ConfigMock},
{provide: MenuController, useClass: ConfigMock},
{provide: NavController, useValue: NavMock},
{provide: Platform, useValue: PlatformMock},
],
imports: [ IonicModule ],
});
TestUtils.configureIonicTestingModule(Page2);
});

it('should create page2', async(() => {
Expand Down
25 changes: 25 additions & 0 deletions src/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ import 'zone.js/dist/jasmine-patch';
import 'zone.js/dist/async-test';
import 'zone.js/dist/fake-async-test';

import { TestBed } from '@angular/core/testing';
import { App, MenuController, NavController, Platform, Config, Keyboard, Form, IonicModule } from 'ionic-angular';
import { ConfigMock, FormMock, NavMock, PlatformMock } from '../test/mocks';

// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
declare var __karma__: any;
declare var require: any;
Expand All @@ -31,3 +35,24 @@ Promise.all([
.then(context => context.keys().map(context))
// Finally, start Karma to run the tests.
.then(__karma__.start, __karma__.error);

export class TestUtils {

public static configureIonicTestingModule(component: any): void {
TestBed.configureTestingModule({
declarations: [
component,
],
providers: [
{provide: App, useClass: ConfigMock},
{provide: Config, useClass: ConfigMock},
{provide: Form, useClass: FormMock},
{provide: Keyboard, useClass: ConfigMock},
{provide: MenuController, useClass: ConfigMock},
{provide: NavController, useValue: NavMock},
{provide: Platform, useValue: PlatformMock},
],
imports: [ IonicModule ],
});
}
}

0 comments on commit c7e9b57

Please sign in to comment.