econocart/src/test.ts

115 lines
4.3 KiB
TypeScript

// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/long-stack-trace-zone';
import 'zone.js/dist/proxy.js';
import 'zone.js/dist/sync-test';
import 'zone.js/dist/jasmine-patch';
import 'zone.js/dist/async-test';
import 'zone.js/dist/fake-async-test';
import { Http } from '@angular/http';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { getTestBed, TestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
import { App, Config, Form, IonicModule, Keyboard, DomController} from 'ionic-angular';
import { MenuController, NavController, Platform, NavParams } from 'ionic-angular';
import { AlertController, ActionSheetController, GestureController } from 'ionic-angular';
import { ToastController } from 'ionic-angular';
import { Toast } from "@ionic-native/toast";
import { LoadingController } from 'ionic-angular';
import { ConfigMock, PlatformMock, NavParamsMock, NavMock, AlertMock } from './mocks';
import { CrudUnidadeMedida } from './providers/CrudUnidadeMedida.service'
import { CrudProduto } from './providers/CrudProduto.service'
import { CrudConsulta } from './providers/CrudConsulta.service';
import { CrudNecessidade } from './providers/CrudNecessidade.service';
import { CrudPlanejamento } from './providers/CrudPlanejamento.service';
import { CrudSupermercado } from './providers/CrudSupermercado.service';
import { OrmDatabase } from './persistence/OrmDatabase.service'
import { Relatorios } from './providers/Relatorios.service';
// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
declare var __karma__: any;
declare var require: any;
// Prevent Karma from running prematurely.
__karma__.loaded = function (): void {
// noop
};
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting(),
);
// Then we find all the tests.
const context: any = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);
// Finally, start Karma to run the tests.
__karma__.start();
export class TestUtils {
public static beforeEachCompiler(components: Array<any>): Promise<{fixture: any, instance: any}> {
return TestUtils.configureIonicTestingModule(components)
.compileComponents().then(() => {
let fixture: any = TestBed.createComponent(components[0]);
return {
fixture: fixture,
instance: fixture.debugElement.componentInstance,
};
});
}
public static configureIonicTestingModule(components: Array<any>): typeof TestBed {
return TestBed.configureTestingModule({
declarations: [
...components,
],
providers: [
App,
Form,
Keyboard,
DomController,
MenuController,
ActionSheetController,
Toast,
ToastController,
GestureController,
Http,
LoadingController,
{provide: Platform, useClass: PlatformMock},
{provide: Config, useClass: ConfigMock},
{provide: NavParams, useClass: NavParamsMock},
{provide: NavController, useClass: NavMock},
{provide: AlertController, useClass: AlertMock},
OrmDatabase,
CrudUnidadeMedida,
CrudProduto,
CrudConsulta,
CrudNecessidade,
CrudPlanejamento,
CrudSupermercado,
Relatorios,
],
imports: [
FormsModule,
IonicModule,
ReactiveFormsModule,
],
});
}
// http://stackoverflow.com/questions/2705583/how-to-simulate-a-click-with-javascript
public static eventFire(el: any, etype: string): void {
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
let evObj: any = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
}