From 0897e68d0e57b6c4955d5f78d89a42987b74275b Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 10:47:16 +0100 Subject: [PATCH 01/31] Fixed OptionsDebugSectionComponent spec --- .../options-debug-section.component.spec.ts | 51 ++++++++++++++++--- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/wowup-electron/src/app/components/options-debug-section/options-debug-section.component.spec.ts b/wowup-electron/src/app/components/options-debug-section/options-debug-section.component.spec.ts index 94c73b29..ab922896 100644 --- a/wowup-electron/src/app/components/options-debug-section/options-debug-section.component.spec.ts +++ b/wowup-electron/src/app/components/options-debug-section/options-debug-section.component.spec.ts @@ -1,29 +1,68 @@ -import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { ComponentFixture, fakeAsync, TestBed, tick } from "@angular/core/testing"; import { OptionsDebugSectionComponent } from "./options-debug-section.component"; import { AddonService } from "../../services/addons/addon.service"; import { WowUpService } from "../../services/wowup/wowup.service"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; +import { httpLoaderFactory } from "../../app.module"; describe("OptionsDebugSectionComponent", () => { let component: OptionsDebugSectionComponent; + let addonService: AddonService; + let wowUpService: WowUpService; + let addonServiceSpy: any; + let wowUpServiceSpy: any; let fixture: ComponentFixture; beforeEach(async () => { + addonServiceSpy = jasmine.createSpyObj(AddonService, ["logDebugData"]); + wowUpServiceSpy = jasmine.createSpyObj(WowUpService, ["showLogsFolder"]); + await TestBed.configureTestingModule({ declarations: [OptionsDebugSectionComponent], + imports: [HttpClientModule, TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + })], + }).overrideComponent(OptionsDebugSectionComponent, { + set: { providers: [ - { provider: AddonService, useValue: jasmine.createSpyObj(AddonService, ['logDebugData']) }, - { provider: WowUpService, useValue: jasmine.createSpyObj(WowUpService, ['showLogsFolder']) }, - ], + { provide: AddonService, useValue: addonServiceSpy }, + { provide: WowUpService, useValue: wowUpServiceSpy }, + ]}, }).compileComponents(); - }); - beforeEach(() => { fixture = TestBed.createComponent(OptionsDebugSectionComponent); component = fixture.componentInstance; + addonService = fixture.debugElement.injector.get(AddonService); + wowUpService = fixture.debugElement.injector.get(WowUpService); + fixture.detectChanges(); }); it("should create", () => { expect(component).toBeTruthy(); }); + + it("Should call logDebugData", fakeAsync(() => { + const button = fixture.debugElement.nativeElement.querySelector("button[action='LogDebugData']"); + button.click(); + tick(); + expect(addonServiceSpy.logDebugData).toHaveBeenCalled(); + })); + + it("Should call showLogFiles", fakeAsync(() => { + const button = fixture.debugElement.nativeElement.querySelector("button[action='ShowLogFiles']"); + button.click(); + tick(); + expect(wowUpServiceSpy.showLogsFolder).toHaveBeenCalled(); + })); }); From 4fa9f95058259a43f7ed1d3ca7977c8f02eaac69 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 15:20:06 +0100 Subject: [PATCH 02/31] (Hopefully) Fixed addon-detail.component.spec.ts --- .../addon-detail.component.spec.ts | 58 +++++++++++++++++-- .../options-debug-section.component.spec.ts | 2 +- 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/wowup-electron/src/app/components/addon-detail/addon-detail.component.spec.ts b/wowup-electron/src/app/components/addon-detail/addon-detail.component.spec.ts index 68ad2ab1..3c210f87 100644 --- a/wowup-electron/src/app/components/addon-detail/addon-detail.component.spec.ts +++ b/wowup-electron/src/app/components/addon-detail/addon-detail.component.spec.ts @@ -1,23 +1,73 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; -import { AddonDetailComponent } from "./addon-detail.component"; +import {AddonDetailComponent, AddonDetailModel} from "./addon-detail.component"; +import { CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; +import { MAT_DIALOG_DATA } from "@angular/material/dialog"; +import { AddonService } from "../../services/addons/addon.service"; +import { + TranslateCompiler, + TranslateLoader, + TranslateModule, + TranslateService, TranslateStore +} from "@ngx-translate/core"; +import { Subject} from "rxjs"; +import { AddonUpdateEvent } from "../../models/wowup/addon-update-event"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import {httpLoaderFactory} from "../../app.module"; +import {TranslateMessageFormatCompiler} from "ngx-translate-messageformat-compiler"; +import {AddonViewModel} from "../../business-objects/my-addon-list-item"; +import {Addon} from "../../entities/addon"; describe("AddonDetailComponent", () => { let component: AddonDetailComponent; let fixture: ComponentFixture; + let addonService: AddonService; + let dialogModel: AddonDetailModel; + let addonServiceSpy: any; beforeEach(async () => { + addonServiceSpy = jasmine.createSpyObj("AddonService", ["logDebugData"], { + addonInstalled$ : new Subject().asObservable(), + }); + + const viewModel = new AddonViewModel({ + installedVersion: "1.0.0", + externalId: '52001', + } as Addon); + + dialogModel = {listItem: viewModel} as AddonDetailModel; + await TestBed.configureTestingModule({ declarations: [AddonDetailComponent], + imports: [HttpClientModule, TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + })], + schemas: [CUSTOM_ELEMENTS_SCHEMA], + providers: [ + { provide: MAT_DIALOG_DATA, useValue: dialogModel }, + ] + }).overrideComponent(AddonDetailComponent, { + set: { + providers: [ + { provide: AddonService, useValue: addonServiceSpy }, + ]}, }).compileComponents(); - }); - beforeEach(() => { fixture = TestBed.createComponent(AddonDetailComponent); component = fixture.componentInstance; + addonService = fixture.debugElement.injector.get(AddonService); + fixture.detectChanges(); }); - it("should create", () => { + it("should create a", () => { expect(component).toBeTruthy(); }); }); diff --git a/wowup-electron/src/app/components/options-debug-section/options-debug-section.component.spec.ts b/wowup-electron/src/app/components/options-debug-section/options-debug-section.component.spec.ts index ab922896..55e54278 100644 --- a/wowup-electron/src/app/components/options-debug-section/options-debug-section.component.spec.ts +++ b/wowup-electron/src/app/components/options-debug-section/options-debug-section.component.spec.ts @@ -9,11 +9,11 @@ import { httpLoaderFactory } from "../../app.module"; describe("OptionsDebugSectionComponent", () => { let component: OptionsDebugSectionComponent; + let fixture: ComponentFixture; let addonService: AddonService; let wowUpService: WowUpService; let addonServiceSpy: any; let wowUpServiceSpy: any; - let fixture: ComponentFixture; beforeEach(async () => { addonServiceSpy = jasmine.createSpyObj(AddonService, ["logDebugData"]); From 3285b8170053268da5d1ce40de57c18ccf0d9844 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 15:25:09 +0100 Subject: [PATCH 03/31] Fixed my-addon-status-column.component.spec.ts --- .../my-addon-status-column.component.spec.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/wowup-electron/src/app/components/my-addon-status-column/my-addon-status-column.component.spec.ts b/wowup-electron/src/app/components/my-addon-status-column/my-addon-status-column.component.spec.ts index 15989d6b..4a8a1f5d 100644 --- a/wowup-electron/src/app/components/my-addon-status-column/my-addon-status-column.component.spec.ts +++ b/wowup-electron/src/app/components/my-addon-status-column/my-addon-status-column.component.spec.ts @@ -1,5 +1,9 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { MyAddonStatusColumnComponent } from "./my-addon-status-column.component"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { httpLoaderFactory } from "../../app.module"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; describe("MyAddonStatusColumnComponent", () => { let component: MyAddonStatusColumnComponent; @@ -8,6 +12,17 @@ describe("MyAddonStatusColumnComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [MyAddonStatusColumnComponent], + imports: [HttpClientModule, TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + })], }).compileComponents(); }); From ac4a071f505f98077e6148595279c358d6a2e658 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 16:50:04 +0100 Subject: [PATCH 04/31] Fixed app.component.spec.ts --- wowup-electron/src/app/app.component.spec.ts | 113 +++++++++++++++--- .../addon-detail.component.spec.ts | 2 +- 2 files changed, 95 insertions(+), 20 deletions(-) diff --git a/wowup-electron/src/app/app.component.spec.ts b/wowup-electron/src/app/app.component.spec.ts index d32749e3..f71eec17 100644 --- a/wowup-electron/src/app/app.component.spec.ts +++ b/wowup-electron/src/app/app.component.spec.ts @@ -1,26 +1,101 @@ -import { TestBed, waitForAsync } from "@angular/core/testing"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; import { RouterTestingModule } from "@angular/router/testing"; -import { TranslateModule } from "@ngx-translate/core"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; import { AppComponent } from "./app.component"; import { ElectronService } from "./services"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { httpLoaderFactory } from "./app.module"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; +import { AddonService } from "./services/addons/addon.service"; +import { MatDialog, MatDialogModule } from "@angular/material/dialog"; +import { WowUpService } from "./services/wowup/wowup.service"; +import { SessionService } from "./services/session/session.service"; +import { FileService } from "./services/files/file.service"; +import { AnalyticsService } from "./services/analytics/analytics.service"; +import { IconService } from "./services/icons/icon.service"; +import { OverlayContainer, OverlayModule } from "@angular/cdk/overlay"; +import { Subject } from "rxjs"; +import { PreferenceChange } from "./models/wowup/preference-change"; describe("AppComponent", () => { - beforeEach( - waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [AppComponent], - providers: [ElectronService], - imports: [RouterTestingModule, TranslateModule.forRoot()], - }).compileComponents(); - }) - ); + let component: AppComponent; + let fixture: ComponentFixture; + let addonService: AddonService; + let addonServiceSpy: any; + let electronService: ElectronService; + let electronServiceSpy: any; + let wowUpService: WowUpService; + let wowUpServiceSpy: any; + let sessionService: SessionService; + let sessionServiceSpy: any; + let fileService: FileService; + let fileServiceSpy: any; + let analyticsService: AnalyticsService; + let analyticsServiceSpy: any; - it( - "should create the app", - waitForAsync(() => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.debugElement.componentInstance; - expect(app).toBeTruthy(); - }) - ); + beforeEach(async () => { + addonServiceSpy = jasmine.createSpyObj("AddonService", ['processAutoUpdates']); + electronServiceSpy = jasmine.createSpyObj("ElectronService", ['invoke'], { + appOptions: {quit : null}, + }); + wowUpServiceSpy = jasmine.createSpyObj("WowUpService", ['a'], { + preferenceChange$: new Subject().asObservable(), + }); + sessionServiceSpy = jasmine.createSpyObj("SessionService", ['a']); + fileServiceSpy = jasmine.createSpyObj("FileService", ['a']); + analyticsServiceSpy = jasmine.createSpyObj("AnalyticsService", ['trackStartup']); + + await TestBed.configureTestingModule({ + declarations: [AppComponent], + providers: [ + MatDialog, + ElectronService, + ], + imports: [ + OverlayModule, + RouterTestingModule, + HttpClientModule, + MatDialogModule, + TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + }) + ], + }).overrideComponent(AppComponent, { + set: { + providers: [ + MatDialog, + IconService, + OverlayContainer, + { provide: AddonService, useValue: addonServiceSpy }, + { provide: ElectronService, useValue: electronServiceSpy }, + { provide: WowUpService, useValue: wowUpServiceSpy }, + { provide: SessionService, useValue: sessionServiceSpy }, + { provide: FileService, useValue: fileServiceSpy }, + { provide: AnalyticsService, useValue: analyticsServiceSpy }, + ]}, + }).compileComponents(); + + fixture = TestBed.createComponent(AppComponent); + component = fixture.componentInstance; + addonService = fixture.debugElement.injector.get(AddonService); + electronService = fixture.debugElement.injector.get(ElectronService); + wowUpService = fixture.debugElement.injector.get(WowUpService); + sessionService = fixture.debugElement.injector.get(SessionService); + fileService = fixture.debugElement.injector.get(FileService); + analyticsService = fixture.debugElement.injector.get(AnalyticsService); + + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); }); diff --git a/wowup-electron/src/app/components/addon-detail/addon-detail.component.spec.ts b/wowup-electron/src/app/components/addon-detail/addon-detail.component.spec.ts index 3c210f87..e6b6264d 100644 --- a/wowup-electron/src/app/components/addon-detail/addon-detail.component.spec.ts +++ b/wowup-electron/src/app/components/addon-detail/addon-detail.component.spec.ts @@ -67,7 +67,7 @@ describe("AddonDetailComponent", () => { fixture.detectChanges(); }); - it("should create a", () => { + it("should create", () => { expect(component).toBeTruthy(); }); }); From 17a11951e899090ade948380d2e99879009dbee7 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 19:27:11 +0100 Subject: [PATCH 05/31] Fixed external-link.directive.spec.ts --- .../external-link.directive.spec.ts | 56 ++++++++++++++----- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/wowup-electron/src/app/directives/external-link.directive.spec.ts b/wowup-electron/src/app/directives/external-link.directive.spec.ts index 4658aab3..c6988315 100644 --- a/wowup-electron/src/app/directives/external-link.directive.spec.ts +++ b/wowup-electron/src/app/directives/external-link.directive.spec.ts @@ -1,21 +1,49 @@ -import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; import { ExternalLinkDirective } from "./external-link.directive"; +import { Component } from "@angular/core"; +import { ElectronService } from "../services"; + +@Component({ + template: `test link`, +}) +class TestAppExternalLinkComponent { +} describe("ExternalLinkDirective", () => { - let directive: ExternalLinkDirective; - let fixture: ComponentFixture; + let component: TestAppExternalLinkComponent; + let fixture: ComponentFixture; + let electronService: ElectronService; + let electronServiceSpy: any; + let shellSpy: any; - beforeEach( - waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [ExternalLinkDirective], - }).compileComponents(); - }) - ); + beforeEach(async () => { + shellSpy = jasmine.createSpyObj("Shell", ["openExternal"]); + electronServiceSpy = jasmine.createSpyObj("ElectronService", [], {shell: shellSpy}); - it("should create an instance", () => { - fixture = TestBed.createComponent(ExternalLinkDirective); - directive = fixture.componentInstance; - expect(directive).toBeTruthy(); + await TestBed.configureTestingModule({ + declarations: [TestAppExternalLinkComponent, ExternalLinkDirective], + }).overrideComponent(TestAppExternalLinkComponent, { + set: { + providers: [ + { provide: ElectronService, useValue: electronServiceSpy }, + ]}, + }).compileComponents(); + + fixture = TestBed.createComponent(TestAppExternalLinkComponent); + component = fixture.componentInstance; + electronService = fixture.debugElement.injector.get(ElectronService); + + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); + + it("should call openExternal on click", async () => { + let a = fixture.debugElement.nativeElement.querySelector('a'); + a.click(); + fixture.detectChanges(); + expect(shellSpy.openExternal).toHaveBeenCalledWith("http://localhost:2020/"); }); }); From 6065537f6b99e2f5e08b7a142425f0e43cbc3ba6 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 20:29:07 +0100 Subject: [PATCH 06/31] Fixed download-count.pipe.spec.ts --- .../get-addon-status-column.component.spec.ts | 4 +- .../external-link.directive.spec.ts | 2 +- .../src/app/pipes/download-count.pipe.spec.ts | 74 +++++++++++++++---- 3 files changed, 63 insertions(+), 17 deletions(-) diff --git a/wowup-electron/src/app/components/get-addon-status-column/get-addon-status-column.component.spec.ts b/wowup-electron/src/app/components/get-addon-status-column/get-addon-status-column.component.spec.ts index 954f71c4..75118c66 100644 --- a/wowup-electron/src/app/components/get-addon-status-column/get-addon-status-column.component.spec.ts +++ b/wowup-electron/src/app/components/get-addon-status-column/get-addon-status-column.component.spec.ts @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { GetAddonStatusColumnComponent } from "./get-addon-status-column.component"; +import { CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; describe("GetAddonStatusColumnComponent", () => { let component: GetAddonStatusColumnComponent; @@ -8,10 +9,9 @@ describe("GetAddonStatusColumnComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [GetAddonStatusColumnComponent], + schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); - }); - beforeEach(() => { fixture = TestBed.createComponent(GetAddonStatusColumnComponent); component = fixture.componentInstance; fixture.detectChanges(); diff --git a/wowup-electron/src/app/directives/external-link.directive.spec.ts b/wowup-electron/src/app/directives/external-link.directive.spec.ts index c6988315..7960018e 100644 --- a/wowup-electron/src/app/directives/external-link.directive.spec.ts +++ b/wowup-electron/src/app/directives/external-link.directive.spec.ts @@ -41,7 +41,7 @@ describe("ExternalLinkDirective", () => { }); it("should call openExternal on click", async () => { - let a = fixture.debugElement.nativeElement.querySelector('a'); + let a = fixture.debugElement.nativeElement.querySelector("a"); a.click(); fixture.detectChanges(); expect(shellSpy.openExternal).toHaveBeenCalledWith("http://localhost:2020/"); diff --git a/wowup-electron/src/app/pipes/download-count.pipe.spec.ts b/wowup-electron/src/app/pipes/download-count.pipe.spec.ts index 5ce1c232..eb6f8499 100644 --- a/wowup-electron/src/app/pipes/download-count.pipe.spec.ts +++ b/wowup-electron/src/app/pipes/download-count.pipe.spec.ts @@ -1,21 +1,67 @@ -import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; import { DownloadCountPipe } from "./download-count.pipe"; +import { Component } from "@angular/core"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { httpLoaderFactory } from "../app.module"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; + +@Component({ + template: `

{{ number | downloadCount }}

`, +}) +class TestDownloadCountComponent { + public number: number = 1; +} describe("DownloadCountPipe", () => { - let directive: DownloadCountPipe; - let fixture: ComponentFixture; + let component: TestDownloadCountComponent; + let fixture: ComponentFixture; - beforeEach( - waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [DownloadCountPipe], - }).compileComponents(); - }) - ); + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [TestDownloadCountComponent, DownloadCountPipe], + imports: [HttpClientModule, TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + })], + }).compileComponents(); - it("should create an instance", () => { - fixture = TestBed.createComponent(DownloadCountPipe); - directive = fixture.componentInstance; - expect(directive).toBeTruthy(); + fixture = TestBed.createComponent(TestDownloadCountComponent); + component = fixture.componentInstance; + fixture.detectChanges(); }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); + + const inputs = { + "e+0": 1, + "e+1": 10, + "e+2": 100, + "e+3": 1000, + "e+4": 10000, + "e+5": 100000, + "e+6": 1000000, + "e+7": 10000000, + "e+8": 100000000, + "e+9": 1000000000, + }; + + for (let index in inputs) { + let number = inputs[index]; + it(`should transform the number ${number} to ${index}`, () => { + component.number = number; + fixture.detectChanges(); + let p = fixture.debugElement.nativeElement.querySelector("p"); + expect(p.innerHTML).toBe(`COMMON.DOWNLOAD_COUNT.${index}`); + }); + } }); From 652ed179eb0157a46f4709256a4fcbbcd90ddc18 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 20:46:08 +0100 Subject: [PATCH 07/31] Fixed download-count.pipe.spec.ts and a possible bug in addon.utils.ts --- .../src/app/pipes/download-count.pipe.spec.ts | 2 +- .../app/pipes/interface-format.pipe.spec.ts | 57 ++++++++++++++----- wowup-electron/src/app/utils/addon.utils.ts | 2 +- 3 files changed, 45 insertions(+), 16 deletions(-) diff --git a/wowup-electron/src/app/pipes/download-count.pipe.spec.ts b/wowup-electron/src/app/pipes/download-count.pipe.spec.ts index eb6f8499..52de0ca5 100644 --- a/wowup-electron/src/app/pipes/download-count.pipe.spec.ts +++ b/wowup-electron/src/app/pipes/download-count.pipe.spec.ts @@ -10,7 +10,7 @@ import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-comp template: `

{{ number | downloadCount }}

`, }) class TestDownloadCountComponent { - public number: number = 1; + public number: number = 0; } describe("DownloadCountPipe", () => { diff --git a/wowup-electron/src/app/pipes/interface-format.pipe.spec.ts b/wowup-electron/src/app/pipes/interface-format.pipe.spec.ts index 354c0050..271176ad 100644 --- a/wowup-electron/src/app/pipes/interface-format.pipe.spec.ts +++ b/wowup-electron/src/app/pipes/interface-format.pipe.spec.ts @@ -1,21 +1,50 @@ -import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; import { InterfaceFormatPipe } from "./interface-format.pipe"; +import { Component } from "@angular/core"; + +@Component({ + template: `

{{ version | interfaceFormat }}

`, +}) +class TestInterfaceFormatComponent { + public version: string = ""; +} describe("InterfaceFormatPipe", () => { - let directive: InterfaceFormatPipe; - let fixture: ComponentFixture; + let component: TestInterfaceFormatComponent; + let fixture: ComponentFixture; - beforeEach( - waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [InterfaceFormatPipe], - }).compileComponents(); - }) - ); + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [TestInterfaceFormatComponent, InterfaceFormatPipe], + }).compileComponents(); - it("should create an instance", () => { - fixture = TestBed.createComponent(InterfaceFormatPipe); - directive = fixture.componentInstance; - expect(directive).toBeTruthy(); + fixture = TestBed.createComponent(TestInterfaceFormatComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); + + it("should transform .toc format to semver", () => { + component.version = "90002"; + fixture.detectChanges(); + let p = fixture.debugElement.nativeElement.querySelector("p"); + expect(p.innerHTML).toBe("9.0.2"); + }); + + it("should leave any dot version alone", () => { + let p: HTMLElement; + + component.version = "0.1"; + fixture.detectChanges(); + p = fixture.debugElement.nativeElement.querySelector("p"); + expect(p.innerHTML).toBe("0.1"); + + component.version = "8.3.1"; + fixture.detectChanges(); + p = fixture.debugElement.nativeElement.querySelector("p"); + expect(p.innerHTML).toBe("8.3.1"); }); }); diff --git a/wowup-electron/src/app/utils/addon.utils.ts b/wowup-electron/src/app/utils/addon.utils.ts index c5f12f1a..4eddcf67 100644 --- a/wowup-electron/src/app/utils/addon.utils.ts +++ b/wowup-electron/src/app/utils/addon.utils.ts @@ -31,7 +31,7 @@ export function getGameVersion(gameVersion: string): string { return gameVersion; } - if (gameVersion.indexOf(".") !== -1) { + if (gameVersion.toString().indexOf(".") !== -1) { return gameVersion; } From 0bf3c7a200eb1062177a3b7024e25b65a52ca5e7 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 21:00:38 +0100 Subject: [PATCH 08/31] Fixed options.component.spec.ts --- .../pages/options/options.component.spec.ts | 71 ++++++++++++++----- 1 file changed, 54 insertions(+), 17 deletions(-) diff --git a/wowup-electron/src/app/pages/options/options.component.spec.ts b/wowup-electron/src/app/pages/options/options.component.spec.ts index 89b4e434..34899f28 100644 --- a/wowup-electron/src/app/pages/options/options.component.spec.ts +++ b/wowup-electron/src/app/pages/options/options.component.spec.ts @@ -1,25 +1,62 @@ -import { inject } from "@angular/core/testing"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; import { ElectronService } from "../../services/electron/electron.service"; import { WowUpService } from "../../services/wowup/wowup.service"; import { OptionsComponent } from "./options.component"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { httpLoaderFactory } from "../../app.module"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; describe("OptionsComponent", () => { + let component: OptionsComponent; + let fixture: ComponentFixture; + let addonService: ElectronService; + let wowUpService: WowUpService; + let electronServiceSpy: any; + let wowUpServiceSpy: any; + + beforeEach(async () => { + wowUpServiceSpy = jasmine.createSpyObj("WowUpService", { + getThemeLogoPath: () => "", + }, { + currentTheme: "horde ofc", + }); + electronServiceSpy = jasmine.createSpyObj("ElectronService", ["a"], { + isWin : false, + isLinux : true, + isMax: false, + }); + + await TestBed.configureTestingModule({ + declarations: [OptionsComponent], + imports: [HttpClientModule, TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + })], + }).overrideComponent(OptionsComponent, { + set: { + providers: [ + { provide: WowUpService, useValue: wowUpServiceSpy }, + { provide: ElectronService, useValue: electronServiceSpy }, + ]}, + }).compileComponents(); + + fixture = TestBed.createComponent(OptionsComponent); + component = fixture.componentInstance; + wowUpService = fixture.debugElement.injector.get(WowUpService); + addonService = fixture.debugElement.injector.get(ElectronService); + + fixture.detectChanges(); + }); + it("should create", () => { - inject( - [ - WowUpService, - ElectronService, - ], - ( - wowupService: WowUpService, - electronService: ElectronService, - ) => { - const instance = new OptionsComponent( - wowupService, - electronService, - ); - expect(instance).toBeTruthy(); - } - ); + expect(component).toBeTruthy(); }); }); From 4f347c39c43d9234b6569ae16f3b633d7aca5977 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 21:10:32 +0100 Subject: [PATCH 09/31] Fixed about.component.spec.ts and use electron service instead of remote --- .../app/pages/about/about.component.spec.ts | 51 +++++++++++++++---- .../src/app/pages/about/about.component.ts | 3 +- 2 files changed, 43 insertions(+), 11 deletions(-) diff --git a/wowup-electron/src/app/pages/about/about.component.spec.ts b/wowup-electron/src/app/pages/about/about.component.spec.ts index 623ea854..22c16bb2 100644 --- a/wowup-electron/src/app/pages/about/about.component.spec.ts +++ b/wowup-electron/src/app/pages/about/about.component.spec.ts @@ -1,21 +1,54 @@ -import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; import { AboutComponent } from "./about.component"; +import { ElectronService } from "../../services"; +import { WowUpService } from "../../services/wowup/wowup.service"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { httpLoaderFactory } from "../../app.module"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; describe("AboutComponent", () => { let component: AboutComponent; let fixture: ComponentFixture; + let addonService: ElectronService; + let wowUpService: WowUpService; + let electronServiceSpy: any; + let wowUpServiceSpy: any; - beforeEach( - waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [AboutComponent], - }).compileComponents(); - }) - ); + beforeEach(async () => { + wowUpServiceSpy = jasmine.createSpyObj("WowUpService", { + getThemeLogoPath: () => "", + }); + electronServiceSpy = jasmine.createSpyObj("ElectronService", { + getVersionNumber: () => '2.0.0', + }); + + await TestBed.configureTestingModule({ + declarations: [AboutComponent], + imports: [HttpClientModule, TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + })], + }).overrideComponent(AboutComponent, { + set: { + providers: [ + { provide: WowUpService, useValue: wowUpServiceSpy }, + { provide: ElectronService, useValue: electronServiceSpy }, + ]}, + }).compileComponents(); - beforeEach(() => { fixture = TestBed.createComponent(AboutComponent); component = fixture.componentInstance; + wowUpService = fixture.debugElement.injector.get(WowUpService); + addonService = fixture.debugElement.injector.get(ElectronService); + fixture.detectChanges(); }); diff --git a/wowup-electron/src/app/pages/about/about.component.ts b/wowup-electron/src/app/pages/about/about.component.ts index 4fbb7d35..2cb6371e 100644 --- a/wowup-electron/src/app/pages/about/about.component.ts +++ b/wowup-electron/src/app/pages/about/about.component.ts @@ -1,5 +1,4 @@ import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; -import { remote } from "electron"; import * as ChangeLogJson from "../../../assets/changelog.json"; import { ChangeLog } from "../../models/wowup/change-log"; import { ElectronService } from "../../services"; @@ -20,7 +19,7 @@ export class AboutComponent implements OnInit { constructor(public wowUpService: WowUpService, public electronService: ElectronService) {} ngOnInit(): void { - this.version = remote.app.getVersion(); + this.electronService.getVersionNumber() } formatChanges(changeLog: ChangeLog): string { From c56c704f559ff184c764ddb9e96ad3a2a894bde6 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 21:35:19 +0100 Subject: [PATCH 10/31] Fixed telemetry-dialog.component.spec.ts --- .../telemetry-dialog.component.spec.ts | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/wowup-electron/src/app/components/telemetry-dialog/telemetry-dialog.component.spec.ts b/wowup-electron/src/app/components/telemetry-dialog/telemetry-dialog.component.spec.ts index c10c7dfc..3513b9fd 100644 --- a/wowup-electron/src/app/components/telemetry-dialog/telemetry-dialog.component.spec.ts +++ b/wowup-electron/src/app/components/telemetry-dialog/telemetry-dialog.component.spec.ts @@ -1,5 +1,10 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { TelemetryDialogComponent } from "./telemetry-dialog.component"; +import { MatDialogModule, MatDialogRef } from "@angular/material/dialog"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { httpLoaderFactory } from "../../app.module"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; describe("TelemetryDialogComponent", () => { let component: TelemetryDialogComponent; @@ -8,10 +13,22 @@ describe("TelemetryDialogComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [TelemetryDialogComponent], + imports: [MatDialogModule, HttpClientModule, TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + })], + providers: [ + {provide: MatDialogRef, useValue: {} }, + ] }).compileComponents(); - }); - beforeEach(() => { fixture = TestBed.createComponent(TelemetryDialogComponent); component = fixture.componentInstance; fixture.detectChanges(); From 09365ac04d1825cdf54081e43d0c54ed4bafdbd9 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 21:42:01 +0100 Subject: [PATCH 11/31] Fixed electron.service.spec.ts --- .../app/services/electron/electron.service.spec.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/wowup-electron/src/app/services/electron/electron.service.spec.ts b/wowup-electron/src/app/services/electron/electron.service.spec.ts index 268db7cd..b630924b 100644 --- a/wowup-electron/src/app/services/electron/electron.service.spec.ts +++ b/wowup-electron/src/app/services/electron/electron.service.spec.ts @@ -1,11 +1,14 @@ -import { TestBed } from "@angular/core/testing"; import { ElectronService } from "./electron.service"; -describe("ElectronService", () => { - beforeEach(() => TestBed.configureTestingModule({})); +class StubbedElectronService extends ElectronService { + public get isElectron(): boolean { + return false; + } +} +describe("ElectronService", () => { it("should be created", () => { - const service: ElectronService = new ElectronService(); + const service: ElectronService = new StubbedElectronService(); expect(service).toBeTruthy(); }); }); From fd8488cb0c5970c70cc5457af81498447b549dda Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 22:03:24 +0100 Subject: [PATCH 12/31] Fixed footer.component.spec.ts --- .../footer/footer.component.spec.ts | 60 ++++++++++++++++++- .../app/pages/about/about.component.spec.ts | 4 +- .../pages/options/options.component.spec.ts | 4 +- 3 files changed, 62 insertions(+), 6 deletions(-) diff --git a/wowup-electron/src/app/components/footer/footer.component.spec.ts b/wowup-electron/src/app/components/footer/footer.component.spec.ts index 28ae6738..590f27ef 100644 --- a/wowup-electron/src/app/components/footer/footer.component.spec.ts +++ b/wowup-electron/src/app/components/footer/footer.component.spec.ts @@ -1,19 +1,75 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { FooterComponent } from "./footer.component"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { httpLoaderFactory } from "../../app.module"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; +import { WowUpService } from "../../services/wowup/wowup.service"; +import { ElectronService } from "../../services"; +import { SessionService } from "../../services/session/session.service"; +import { MatDialogModule } from "@angular/material/dialog"; +import { OverlayModule } from "@angular/cdk/overlay"; +import { MatSnackBarModule } from "@angular/material/snack-bar"; +import { BehaviorSubject, Subject } from "rxjs"; +import { UpdateCheckResult } from "electron-updater"; describe("FooterComponent", () => { let component: FooterComponent; let fixture: ComponentFixture; + let electronService: ElectronService; + let wowUpService: WowUpService; + let sessionService: SessionService; + let electronServiceSpy: any; + let wowUpServiceSpy: any; + let sessionServiceSpy: any; beforeEach(async () => { + wowUpServiceSpy = jasmine.createSpyObj("WowUpService", [""], { + wowupUpdateCheck$: new Subject().asObservable(), + wowupUpdateDownloaded$: new Subject().asObservable(), + wowupUpdateCheckInProgress$: new Subject().asObservable(), + wowupUpdateDownloadInProgress$: new Subject().asObservable(), + }); + + sessionServiceSpy = jasmine.createSpyObj("SessionService", [""], { + statusText$: new BehaviorSubject(""), + pageContextText$: new BehaviorSubject(""), + }); + await TestBed.configureTestingModule({ declarations: [FooterComponent], + imports: [ + MatDialogModule, + OverlayModule, + MatSnackBarModule, + HttpClientModule, + TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + }) + ], + }).overrideComponent(FooterComponent, { + set: { + providers: [ + { provide: WowUpService, useValue: wowUpServiceSpy }, + { provide: ElectronService, useValue: electronServiceSpy }, + { provide: SessionService, useValue: sessionServiceSpy }, + ]}, }).compileComponents(); - }); - beforeEach(() => { fixture = TestBed.createComponent(FooterComponent); component = fixture.componentInstance; + wowUpService = fixture.debugElement.injector.get(WowUpService); + electronService = fixture.debugElement.injector.get(ElectronService); + sessionService = fixture.debugElement.injector.get(SessionService); + fixture.detectChanges(); }); diff --git a/wowup-electron/src/app/pages/about/about.component.spec.ts b/wowup-electron/src/app/pages/about/about.component.spec.ts index 22c16bb2..58d3fe44 100644 --- a/wowup-electron/src/app/pages/about/about.component.spec.ts +++ b/wowup-electron/src/app/pages/about/about.component.spec.ts @@ -10,7 +10,7 @@ import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-comp describe("AboutComponent", () => { let component: AboutComponent; let fixture: ComponentFixture; - let addonService: ElectronService; + let electronService: ElectronService; let wowUpService: WowUpService; let electronServiceSpy: any; let wowUpServiceSpy: any; @@ -47,7 +47,7 @@ describe("AboutComponent", () => { fixture = TestBed.createComponent(AboutComponent); component = fixture.componentInstance; wowUpService = fixture.debugElement.injector.get(WowUpService); - addonService = fixture.debugElement.injector.get(ElectronService); + electronService = fixture.debugElement.injector.get(ElectronService); fixture.detectChanges(); }); diff --git a/wowup-electron/src/app/pages/options/options.component.spec.ts b/wowup-electron/src/app/pages/options/options.component.spec.ts index 34899f28..81b62bd3 100644 --- a/wowup-electron/src/app/pages/options/options.component.spec.ts +++ b/wowup-electron/src/app/pages/options/options.component.spec.ts @@ -10,7 +10,7 @@ import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-comp describe("OptionsComponent", () => { let component: OptionsComponent; let fixture: ComponentFixture; - let addonService: ElectronService; + let electronService: ElectronService; let wowUpService: WowUpService; let electronServiceSpy: any; let wowUpServiceSpy: any; @@ -51,7 +51,7 @@ describe("OptionsComponent", () => { fixture = TestBed.createComponent(OptionsComponent); component = fixture.componentInstance; wowUpService = fixture.debugElement.injector.get(WowUpService); - addonService = fixture.debugElement.injector.get(ElectronService); + electronService = fixture.debugElement.injector.get(ElectronService); fixture.detectChanges(); }); From a67ce0544fab52ce56c30a450ec2e0f1cb82da8c Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 22:26:13 +0100 Subject: [PATCH 13/31] Fixed get-addons.component.spec.ts --- wowup-electron/src/app/app.component.spec.ts | 6 +- .../get-addons/get-addons.component.spec.ts | 86 +++++++++++++++++-- .../pages/options/options.component.spec.ts | 2 +- 3 files changed, 82 insertions(+), 12 deletions(-) diff --git a/wowup-electron/src/app/app.component.spec.ts b/wowup-electron/src/app/app.component.spec.ts index f71eec17..434a21ce 100644 --- a/wowup-electron/src/app/app.component.spec.ts +++ b/wowup-electron/src/app/app.component.spec.ts @@ -38,11 +38,11 @@ describe("AppComponent", () => { electronServiceSpy = jasmine.createSpyObj("ElectronService", ['invoke'], { appOptions: {quit : null}, }); - wowUpServiceSpy = jasmine.createSpyObj("WowUpService", ['a'], { + wowUpServiceSpy = jasmine.createSpyObj("WowUpService", [""], { preferenceChange$: new Subject().asObservable(), }); - sessionServiceSpy = jasmine.createSpyObj("SessionService", ['a']); - fileServiceSpy = jasmine.createSpyObj("FileService", ['a']); + sessionServiceSpy = jasmine.createSpyObj("SessionService", [""]); + fileServiceSpy = jasmine.createSpyObj("FileService", [""]); analyticsServiceSpy = jasmine.createSpyObj("AnalyticsService", ['trackStartup']); await TestBed.configureTestingModule({ diff --git a/wowup-electron/src/app/pages/get-addons/get-addons.component.spec.ts b/wowup-electron/src/app/pages/get-addons/get-addons.component.spec.ts index 34fd46e4..06e624d5 100644 --- a/wowup-electron/src/app/pages/get-addons/get-addons.component.spec.ts +++ b/wowup-electron/src/app/pages/get-addons/get-addons.component.spec.ts @@ -1,21 +1,91 @@ -import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; import { GetAddonsComponent } from "./get-addons.component"; +import { AddonService } from "../../services/addons/addon.service"; +import { SessionService } from "../../services/session/session.service"; +import { MatDialog, MatDialogModule } from "@angular/material/dialog"; +import { WowUpService } from "../../services/wowup/wowup.service"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { ElectronService } from "../../services"; +import { WarcraftService } from "../../services/warcraft/warcraft.service"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { httpLoaderFactory } from "../../app.module"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; +import { OverlayModule } from "@angular/cdk/overlay"; +import { BehaviorSubject } from "rxjs"; +import { MatMenuModule } from "@angular/material/menu"; +import { WowClientType } from "../../models/warcraft/wow-client-type"; describe("GetAddonsComponent", () => { let component: GetAddonsComponent; let fixture: ComponentFixture; + let electronService: ElectronService; + let electronServiceSpy: any; + let wowUpService: WowUpService; + let wowUpServiceSpy: any; + let sessionService: SessionService; + let sessionServiceSpy: any; + let addonService: AddonService; + let addonServiceSpy: any; + let warcraftService: WarcraftService; + let warcraftServiceSpy: any; - beforeEach( - waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [GetAddonsComponent], - }).compileComponents(); + beforeEach(async () => { + wowUpServiceSpy = jasmine.createSpyObj("WowUpService", [""], { + getAddonsHiddenColumns: [], }) - ); + sessionServiceSpy = jasmine.createSpyObj("SessionService", [""], { + selectedHomeTab$: new BehaviorSubject(0).asObservable(), + }) + warcraftServiceSpy = jasmine.createSpyObj("WarcraftService", [""], { + installedClientTypesSelectItems$: new BehaviorSubject(undefined).asObservable(), + }) + electronServiceSpy = jasmine.createSpyObj("ElectronService", [""], { + isWin : false, + isLinux : true, + isMax: false, + }); + + await TestBed.configureTestingModule({ + declarations: [GetAddonsComponent], + imports: [ + MatMenuModule, + OverlayModule, + HttpClientModule, + MatDialogModule, + TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + }) + ], + providers: [ + MatDialog, + ] + }).overrideComponent(GetAddonsComponent, { + set: { + providers: [ + { provide: AddonService, useValue: addonServiceSpy }, + { provide: WowUpService, useValue: wowUpServiceSpy }, + { provide: ElectronService, useValue: electronServiceSpy }, + { provide: SessionService, useValue: sessionServiceSpy }, + { provide: WarcraftService, useValue: warcraftServiceSpy }, + ]}, + }).compileComponents(); - beforeEach(() => { fixture = TestBed.createComponent(GetAddonsComponent); component = fixture.componentInstance; + addonService = fixture.debugElement.injector.get(AddonService); + wowUpService = fixture.debugElement.injector.get(WowUpService); + electronService = fixture.debugElement.injector.get(ElectronService); + sessionService = fixture.debugElement.injector.get(SessionService); + warcraftService = fixture.debugElement.injector.get(WarcraftService); + fixture.detectChanges(); }); diff --git a/wowup-electron/src/app/pages/options/options.component.spec.ts b/wowup-electron/src/app/pages/options/options.component.spec.ts index 81b62bd3..67e73cdf 100644 --- a/wowup-electron/src/app/pages/options/options.component.spec.ts +++ b/wowup-electron/src/app/pages/options/options.component.spec.ts @@ -21,7 +21,7 @@ describe("OptionsComponent", () => { }, { currentTheme: "horde ofc", }); - electronServiceSpy = jasmine.createSpyObj("ElectronService", ["a"], { + electronServiceSpy = jasmine.createSpyObj("ElectronService", [""], { isWin : false, isLinux : true, isMax: false, From 3476f3ace6fbe7a43b0932ce7c08ead272d1e339 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 22:39:15 +0100 Subject: [PATCH 14/31] Fixed get-addon-list-item-file-prop.pipe.spec.ts --- ...get-addon-list-item-file-prop.pipe.spec.ts | 56 ++++++++++++++----- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/wowup-electron/src/app/pipes/get-addon-list-item-file-prop.pipe.spec.ts b/wowup-electron/src/app/pipes/get-addon-list-item-file-prop.pipe.spec.ts index 109731d0..51e3e970 100644 --- a/wowup-electron/src/app/pipes/get-addon-list-item-file-prop.pipe.spec.ts +++ b/wowup-electron/src/app/pipes/get-addon-list-item-file-prop.pipe.spec.ts @@ -1,21 +1,51 @@ import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; import { GetAddonListItemFilePropPipe } from "./get-addon-list-item-file-prop.pipe"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { httpLoaderFactory } from "../app.module"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; +import { Component } from "@angular/core"; +import { GetAddonListItem } from "../business-objects/get-addon-list-item"; +import { AddonChannelType } from "../models/wowup/addon-channel-type"; + +@Component({ + template: `

{{ item | getAddonListItemFileProp: "version": channel }}

`, +}) +class TestAddonListItemFilePropComponent { + public item: GetAddonListItem = { + searchResult: { + files: [], + }, + } as GetAddonListItem; + public channel: AddonChannelType = AddonChannelType.Stable; +} describe("GetAddonListItemFilePropPipe", () => { - let directive: GetAddonListItemFilePropPipe; - let fixture: ComponentFixture; + let component: TestAddonListItemFilePropComponent; + let fixture: ComponentFixture; - beforeEach( - waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [GetAddonListItemFilePropPipe], - }).compileComponents(); - }) - ); + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [TestAddonListItemFilePropComponent, GetAddonListItemFilePropPipe], + imports: [HttpClientModule, TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + })], + }).compileComponents(); - it("should create an instance", () => { - fixture = TestBed.createComponent(GetAddonListItemFilePropPipe); - directive = fixture.componentInstance; - expect(directive).toBeTruthy(); + fixture = TestBed.createComponent(TestAddonListItemFilePropComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); }); }); From ca73b6aa84d7c7d02bfd9a0fdd0b962130d860cc Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 22:49:18 +0100 Subject: [PATCH 15/31] Fixed options-app-section.component.spec.ts --- .../options-app-section.component.spec.ts | 75 ++++++++++++++++++- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/wowup-electron/src/app/components/options-app-section/options-app-section.component.spec.ts b/wowup-electron/src/app/components/options-app-section/options-app-section.component.spec.ts index f29179e4..ebbc2b15 100644 --- a/wowup-electron/src/app/components/options-app-section/options-app-section.component.spec.ts +++ b/wowup-electron/src/app/components/options-app-section/options-app-section.component.spec.ts @@ -1,20 +1,89 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - +import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from "@ngx-translate/core"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; +import { MatDialog, MatDialogModule } from "@angular/material/dialog"; +import { AnalyticsService } from "../../services/analytics/analytics.service"; +import { FileService } from "../../services/files/file.service"; +import { SessionService } from "../../services/session/session.service"; +import { WowUpService } from "../../services/wowup/wowup.service"; +import { ElectronService } from "../../services"; import { OptionsAppSectionComponent } from "./options-app-section.component"; +import { httpLoaderFactory } from "../../app.module"; +import { BehaviorSubject } from "rxjs"; describe("OptionsAppSectionComponent", () => { let component: OptionsAppSectionComponent; let fixture: ComponentFixture; + let electronService: ElectronService; + let electronServiceSpy: any; + let wowUpService: WowUpService; + let wowUpServiceSpy: any; + let sessionService: SessionService; + let sessionServiceSpy: any; + let fileService: FileService; + let fileServiceSpy: any; + let analyticsService: AnalyticsService; + let analyticsServiceSpy: any; beforeEach(async () => { + analyticsServiceSpy = jasmine.createSpyObj("AnalyticsService", [""], { + telemetryEnabled$: new BehaviorSubject(false).asObservable() + }); + electronServiceSpy = jasmine.createSpyObj("ElectronService", [""], { + isWin : false, + isLinux : true, + isMax: false, + }); + wowUpServiceSpy = jasmine.createSpyObj("WowUpService", [""], { + collapseToTray: false, + useHardwareAcceleration: false, + startWithSystem: false, + startMinimized: false, + currentLanguage: false, + }); + await TestBed.configureTestingModule({ declarations: [OptionsAppSectionComponent], + providers: [ + MatDialog, + ElectronService, + ], + imports: [ + HttpClientModule, + MatDialogModule, + TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + }) + ], + }).overrideComponent(OptionsAppSectionComponent, { + set: { + providers: [ + MatDialog, + { provide: ElectronService, useValue: electronServiceSpy }, + { provide: WowUpService, useValue: wowUpServiceSpy }, + { provide: SessionService, useValue: sessionServiceSpy }, + { provide: FileService, useValue: fileServiceSpy }, + { provide: AnalyticsService, useValue: analyticsServiceSpy }, + ]}, }).compileComponents(); - }); - beforeEach(() => { fixture = TestBed.createComponent(OptionsAppSectionComponent); component = fixture.componentInstance; + electronService = fixture.debugElement.injector.get(ElectronService); + sessionService = fixture.debugElement.injector.get(SessionService); + wowUpService = fixture.debugElement.injector.get(WowUpService); + fileService = fixture.debugElement.injector.get(FileService); + analyticsService = fixture.debugElement.injector.get(AnalyticsService); + fixture.detectChanges(); }); From 49a7f04bbaf389c6d232b6d00d151129b87455ea Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 22:58:40 +0100 Subject: [PATCH 16/31] Fixed relative-duration-pipe.spec.ts --- .../app/pipes/relative-duration-pipe.spec.ts | 47 +++++++++++++++---- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/wowup-electron/src/app/pipes/relative-duration-pipe.spec.ts b/wowup-electron/src/app/pipes/relative-duration-pipe.spec.ts index 3a9baf7a..b00deaea 100644 --- a/wowup-electron/src/app/pipes/relative-duration-pipe.spec.ts +++ b/wowup-electron/src/app/pipes/relative-duration-pipe.spec.ts @@ -1,13 +1,44 @@ -import { DatePipe } from "@angular/common"; -import { inject } from "@angular/core/testing"; -import { TranslateService } from "@ngx-translate/core"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { Component } from "@angular/core"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { httpLoaderFactory } from "../app.module"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; import { RelativeDurationPipe } from "./relative-duration-pipe"; +@Component({ + template: `

{{ date | relativeDuration }}

`, +}) +class TestRelativeDurationComponent { + public date = new Date().toString(); +} + describe("RelativeDurationPipe", () => { - it("create an instance", () => { - inject([DatePipe, TranslateService], (datePipe: DatePipe, translateService: TranslateService) => { - const pipe = new RelativeDurationPipe(translateService); - expect(pipe).toBeTruthy(); - }); + let component: TestRelativeDurationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [TestRelativeDurationComponent, RelativeDurationPipe], + imports: [HttpClientModule, TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + })], + }).compileComponents(); + + fixture = TestBed.createComponent(TestRelativeDurationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); }); }); From 2bf657f537e73dc8c12bb3594a775414afa6ebe4 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 22:59:52 +0100 Subject: [PATCH 17/31] Fixed progress-spinner.component.spec.ts --- .../progress-spinner.component.spec.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/wowup-electron/src/app/components/progress-spinner/progress-spinner.component.spec.ts b/wowup-electron/src/app/components/progress-spinner/progress-spinner.component.spec.ts index 066b0c58..97c97881 100644 --- a/wowup-electron/src/app/components/progress-spinner/progress-spinner.component.spec.ts +++ b/wowup-electron/src/app/components/progress-spinner/progress-spinner.component.spec.ts @@ -1,5 +1,9 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { ProgressSpinnerComponent } from "./progress-spinner.component"; +import { HttpClient, HttpClientModule } from "@angular/common/http"; +import { TranslateCompiler, TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { httpLoaderFactory } from "../../app.module"; +import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler"; describe("ProgressSpinnerComponent", () => { let component: ProgressSpinnerComponent; @@ -8,10 +12,19 @@ describe("ProgressSpinnerComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ProgressSpinnerComponent], + imports: [HttpClientModule, TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: httpLoaderFactory, + deps: [HttpClient], + }, + compiler: { + provide: TranslateCompiler, + useClass: TranslateMessageFormatCompiler, + }, + })], }).compileComponents(); - }); - beforeEach(() => { fixture = TestBed.createComponent(ProgressSpinnerComponent); component = fixture.componentInstance; fixture.detectChanges(); From cc28f294b1d284619170ff41a727fee2a3838a73 Mon Sep 17 00:00:00 2001 From: Lynn Date: Sun, 22 Nov 2020 23:13:41 +0100 Subject: [PATCH 18/31] Fixed titlebar.component.spec.ts and removed platform dependency --- wowup-electron/src/app/app.component.spec.ts | 6 +-- .../titlebar/titlebar.component.html | 4 +- .../titlebar/titlebar.component.spec.ts | 47 ++++++++++++++++++- .../components/titlebar/titlebar.component.ts | 14 +++--- 4 files changed, 56 insertions(+), 15 deletions(-) diff --git a/wowup-electron/src/app/app.component.spec.ts b/wowup-electron/src/app/app.component.spec.ts index 434a21ce..8848b295 100644 --- a/wowup-electron/src/app/app.component.spec.ts +++ b/wowup-electron/src/app/app.component.spec.ts @@ -34,8 +34,8 @@ describe("AppComponent", () => { let analyticsServiceSpy: any; beforeEach(async () => { - addonServiceSpy = jasmine.createSpyObj("AddonService", ['processAutoUpdates']); - electronServiceSpy = jasmine.createSpyObj("ElectronService", ['invoke'], { + addonServiceSpy = jasmine.createSpyObj("AddonService", ["processAutoUpdates"]); + electronServiceSpy = jasmine.createSpyObj("ElectronService", ["invoke"], { appOptions: {quit : null}, }); wowUpServiceSpy = jasmine.createSpyObj("WowUpService", [""], { @@ -43,7 +43,7 @@ describe("AppComponent", () => { }); sessionServiceSpy = jasmine.createSpyObj("SessionService", [""]); fileServiceSpy = jasmine.createSpyObj("FileService", [""]); - analyticsServiceSpy = jasmine.createSpyObj("AnalyticsService", ['trackStartup']); + analyticsServiceSpy = jasmine.createSpyObj("AnalyticsService", ["trackStartup"]); await TestBed.configureTestingModule({ declarations: [AppComponent], diff --git a/wowup-electron/src/app/components/titlebar/titlebar.component.html b/wowup-electron/src/app/components/titlebar/titlebar.component.html index e97e7de2..2b6df5a1 100644 --- a/wowup-electron/src/app/components/titlebar/titlebar.component.html +++ b/wowup-electron/src/app/components/titlebar/titlebar.component.html @@ -13,7 +13,7 @@
WowUp.io
-