/* eslint-disable @typescript-eslint/no-explicit-any */ /* * Copyright (C) 2018, 2019 StApps * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core'; import {TestBed, waitForAsync} from '@angular/core/testing'; import {SplashScreen} from '@ionic-native/splash-screen/ngx'; import {StatusBar} from '@ionic-native/status-bar/ngx'; import {Platform} from '@ionic/angular'; import {TranslateService} from '@ngx-translate/core'; import {ThingTranslateService} from './translation/thing-translate.service'; import {AppComponent} from './app.component'; import {ConfigProvider} from './modules/config/config.provider'; import {SettingsProvider} from './modules/settings/settings.provider'; import {NGXLogger} from 'ngx-logger'; describe('AppComponent', () => { let statusBarSpy: jasmine.SpyObj; let splashScreenSpy: jasmine.SpyObj; let platformReadySpy: any; let platformSpy: jasmine.SpyObj; let translateServiceSpy: jasmine.SpyObj; let thingTranslateServiceSpy: jasmine.SpyObj; let settingsProvider: jasmine.SpyObj; let configProvider: jasmine.SpyObj; let ngxLogger: jasmine.SpyObj; beforeEach( waitForAsync(() => { statusBarSpy = jasmine.createSpyObj('StatusBar', ['styleDefault']); splashScreenSpy = jasmine.createSpyObj('SplashScreen', ['hide']); platformReadySpy = Promise.resolve(); platformSpy = jasmine.createSpyObj('Platform', {ready: platformReadySpy}); translateServiceSpy = jasmine.createSpyObj('TranslateService', [ 'setDefaultLang', 'use', ]); thingTranslateServiceSpy = jasmine.createSpyObj('ThingTranslateService', [ 'init', ]); settingsProvider = jasmine.createSpyObj('SettingsProvider', [ 'getSettingValue', 'provideSetting', 'setCategoriesOrder', ]); configProvider = jasmine.createSpyObj('ConfigProvider', ['init']); ngxLogger = jasmine.createSpyObj('NGXLogger', ['log', 'error', 'warn']); TestBed.configureTestingModule({ declarations: [AppComponent], providers: [ {provide: StatusBar, useValue: statusBarSpy}, {provide: SplashScreen, useValue: splashScreenSpy}, {provide: Platform, useValue: platformSpy}, {provide: TranslateService, useValue: translateServiceSpy}, {provide: ThingTranslateService, useValue: thingTranslateServiceSpy}, {provide: SettingsProvider, useValue: settingsProvider}, {provide: ConfigProvider, useValue: configProvider}, {provide: NGXLogger, useValue: ngxLogger}, ], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); }), ); it('should create the app', () => { const fixture = TestBed.createComponent(AppComponent); const app = fixture.debugElement.componentInstance; expect(app).toBeTruthy(); }); it('should initialize the app', async () => { TestBed.createComponent(AppComponent); expect(platformSpy.ready).toHaveBeenCalled(); await platformReadySpy; expect(statusBarSpy.styleDefault).toHaveBeenCalled(); expect(splashScreenSpy.hide).toHaveBeenCalled(); }); // TODO: add more tests! });