import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core'; import {TestBed, async} from '@angular/core/testing'; import {MenuController, Platform} from '@ionic/angular'; import {SplashScreen} from '@ionic-native/splash-screen/ngx'; import {StatusBar} from '@ionic-native/status-bar/ngx'; import {AppComponent} from './app.component'; import {HttpClientModule} from '@angular/common/http'; import {IonicStorageModule} from '@ionic/storage'; import {AppRoutingModule} from './app-routing.module'; import {TranslateTestingModule} from './translate-testing/translate-testing.module'; import {APP_BASE_HREF} from '@angular/common'; import {Subscription} from 'rxjs'; import {HelperService} from './helper.service'; import MockMC from './models/mock'; describe('AppComponent', () => { class PlatformStub { backButton = { subscribeWithPriority(priority: number, callback: () => (Promise | void)): Subscription { return Subscription.EMPTY; } }; wasReadyCalled = false; public ready(): Promise { this.wasReadyCalled = true; return Promise.resolve(); } } let statusBarSpy, splashScreenSpy, platformReadySpy, fixture; beforeEach(async(() => { platformReadySpy = Promise.resolve(); statusBarSpy = jasmine.createSpyObj('StatusBar', ['styleDefault']); splashScreenSpy = jasmine.createSpyObj('SplashScreen', ['hide']); TestBed.configureTestingModule({ declarations: [AppComponent], imports: [ AppRoutingModule, HttpClientModule, IonicStorageModule.forRoot({name: 'mc_db', driverOrder: ['indexeddb', 'websql', 'localstorage']}), TranslateTestingModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ {provide: StatusBar, useValue: statusBarSpy}, {provide: SplashScreen, useValue: splashScreenSpy}, {provide: Platform, useClass: PlatformStub}, {provide: APP_BASE_HREF, useValue: '/'}, {provide: MenuController} ], }).compileComponents(); spyOn(HelperService, 'makeGetRequest').and.returnValue(Promise.resolve(MockMC.apiResponseCorporaGet)); fixture = TestBed.createComponent(AppComponent); })); it('should create the app', () => { const app = fixture.debugElement.componentInstance; expect(app).toBeTruthy(); }); it('should initialize the app', async () => { const platformStub: PlatformStub = TestBed.get(Platform); expect(platformStub.wasReadyCalled).toBeTruthy(); await platformReadySpy; expect(statusBarSpy.styleDefault).toHaveBeenCalled(); expect(splashScreenSpy.hide).toHaveBeenCalled(); }); // TODO: add more tests! });