From 99f6fd85d2840de8acd26b2c1d664c836ffa16e3 Mon Sep 17 00:00:00 2001 From: 4gray Date: Fri, 2 Apr 2021 10:53:22 +0200 Subject: [PATCH] test: extend tests --- .../playlist-info.component.spec.ts | 5 ++- src/app/settings/settings.component.spec.ts | 42 +++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/app/home/recent-playlists/playlist-info/playlist-info.component.spec.ts b/src/app/home/recent-playlists/playlist-info/playlist-info.component.spec.ts index 02170f822..3d021feeb 100644 --- a/src/app/home/recent-playlists/playlist-info/playlist-info.component.spec.ts +++ b/src/app/home/recent-playlists/playlist-info/playlist-info.component.spec.ts @@ -9,7 +9,7 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { DatePipe } from '@angular/common'; import { PlaylistInfoComponent } from './playlist-info.component'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { FormsModule, ReactiveFormsModule, FormBuilder } from '@angular/forms'; describe('PlaylistInfoComponent', () => { let component: PlaylistInfoComponent; @@ -20,7 +20,7 @@ describe('PlaylistInfoComponent', () => { waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - MockModule(FormsModule), + FormsModule, MockModule(MatDialogModule), MockModule(MatFormFieldModule), ReactiveFormsModule, @@ -33,6 +33,7 @@ describe('PlaylistInfoComponent', () => { providers: [ { provide: MAT_DIALOG_DATA, useValue: {} }, { provide: ElectronService, useClass: ElectronServiceStub }, + FormBuilder, ], }).compileComponents(); }) diff --git a/src/app/settings/settings.component.spec.ts b/src/app/settings/settings.component.spec.ts index ef88a7997..c58efe5bc 100644 --- a/src/app/settings/settings.component.spec.ts +++ b/src/app/settings/settings.component.spec.ts @@ -1,3 +1,8 @@ +import { StorageMap } from '@ngx-pwa/local-storage'; +import { FormBuilder } from '@angular/forms'; +/* eslint-disable @typescript-eslint/unbound-method */ +import { ElectronService } from './../services/electron.service'; +import { ElectronServiceStub } from './../home/home.component.spec'; import { MatSelectModule } from '@angular/material/select'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatListModule } from '@angular/material/list'; @@ -14,14 +19,25 @@ import { MatIconModule } from '@angular/material/icon'; import { MatSnackBar } from '@angular/material/snack-bar'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { EPG_FETCH } from '../../../ipc-commands'; +import { Router } from '@angular/router'; class MatSnackBarStub { open(): void {} } +class MockRouter { + navigateByUrl(url: string) { + return url; + } +} + describe('SettingsComponent', () => { let component: SettingsComponent; let fixture: ComponentFixture; + let electronService: ElectronService; + let storage: StorageMap; + let router: Router; beforeEach( waitForAsync(() => { @@ -32,11 +48,18 @@ describe('SettingsComponent', () => { MockPipe(TranslatePipe), ], providers: [ + FormBuilder, { provide: MatSnackBar, useClass: MatSnackBarStub }, { provide: TranslateService, useClass: TranslateServiceStub, }, + { provide: ElectronService, useClass: ElectronServiceStub }, + { + provide: Router, + useClass: MockRouter, + }, + StorageMap, ], imports: [ HttpClientTestingModule, @@ -56,10 +79,29 @@ describe('SettingsComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(SettingsComponent); + electronService = TestBed.inject(ElectronService); + storage = TestBed.inject(StorageMap); + router = TestBed.inject(Router); component = fixture.componentInstance; + fixture.detectChanges(); }); it('should create and init component', () => { expect(component).toBeTruthy(); }); + + it('should send epg fetch command', () => { + spyOn(electronService.ipcRenderer, 'send'); + component.fetchEpg(); + expect(electronService.ipcRenderer.send).toHaveBeenCalledWith( + EPG_FETCH, + { url: '' } + ); + }); + + it('should navigate back to home page', () => { + spyOn(router, 'navigateByUrl'); + component.backToHome(); + expect(router.navigateByUrl).toHaveBeenCalledTimes(1); + }); });