Skip to content

Commit 4e56a75

Browse files
Merge branch 'master' of github.com:azerothcore/Keira3
2 parents 61676e2 + 51bc0f6 commit 4e56a75

File tree

5 files changed

+389
-77
lines changed

5 files changed

+389
-77
lines changed

apps/keira/src/app/features/dashboard/dashboard.component.html

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@
88
</div>
99

1010
<div class="content-block">
11-
<p class="lead mb-3" [translate]="'DASHBOARD.SYSTEM_DETAILS'"></p>
12-
<div *ngIf="error" class="alert alert-danger error-box mt-2" id="database-warning">
11+
<p class="lead mb-3">
12+
{{ 'DASHBOARD.SYSTEM_DETAILS' | translate }}
13+
<button type="button" class="btn btn-primary btn-sm float-end" id="reload-btn" (click)="reload()">
14+
<i class="fa fa-sync fa-sm"></i> {{ 'RELOAD' | translate }}
15+
</button>
16+
</p>
17+
<div *ngIf="wrongEmuWarning" class="alert alert-danger error-box mt-2" id="database-warning">
1318
<p [innerHTML]="'DASHBOARD.SYSTEM_WARNING' | translate: { DATABASE_NAME: databaseName }"></p>
14-
1519
<ul>
1620
<li [innerHTML]="'DASHBOARD.SYSTEM_WARNING_1' | translate"></li>
1721
<li [innerHTML]="'DASHBOARD.SYSTEM_WARNING_2' | translate"></li>

apps/keira/src/app/features/dashboard/dashboard.component.spec.ts

Lines changed: 65 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,18 @@ class DashboardComponentPage extends PageObject<DashboardComponent> {
2020
get dbVersion(): HTMLTableCellElement {
2121
return this.query<HTMLTableCellElement>('#db-version');
2222
}
23-
get dbWorldVersion(): HTMLTableCellElement {
24-
return this.query<HTMLTableCellElement>('#db-world-version');
25-
}
26-
get dbWarning(): HTMLDivElement {
27-
return this.query<HTMLDivElement>('#database-warning', false);
23+
// get dbWorldVersion(): HTMLTableCellElement {
24+
// return this.query<HTMLTableCellElement>('#db-world-version');
25+
// }
26+
dbWarning(assert = true): HTMLDivElement {
27+
return this.query<HTMLDivElement>('#database-warning', assert);
2828
}
2929
get commitHashUrl(): HTMLAnchorElement {
3030
return this.query<HTMLAnchorElement>('#commit-hash-url');
3131
}
32+
get reloadBtn(): HTMLButtonElement {
33+
return this.query<HTMLButtonElement>('#reload-btn');
34+
}
3235
}
3336

3437
describe('DashboardComponent', () => {
@@ -38,6 +41,12 @@ describe('DashboardComponent', () => {
3841
db_version: 'ACDB 335.3 (dev)',
3942
cache_id: 3,
4043
};
44+
const wrongVersionRow: VersionRow = {
45+
core_version: 'ShinCore rev. 2bcedc2859e7 2019-02-17 10:04:09 +0100 (master branch) (Unix, Debug)',
46+
core_revision: '2bcedc2859e7',
47+
db_version: 'SHINDB 335.3 (dev)',
48+
cache_id: 3,
49+
};
4150
const worldDbVersion = '2019_02_17_02';
4251
const versionDbRow: VersionDbRow = {
4352
sql_rev: 123,
@@ -66,20 +75,19 @@ describe('DashboardComponent', () => {
6675
};
6776

6877
it('should correctly display the versions', () => {
69-
const { fixture, page, component } = setup();
70-
fixture.detectChanges();
78+
const { page } = setup();
79+
page.detectChanges();
7180

7281
expect(page.coreVersion.innerHTML).toContain(versionRow.core_version);
7382
expect(page.coreRevision.innerHTML).toContain(versionRow.core_revision);
7483
expect(page.dbVersion.innerHTML).toContain(versionRow.db_version);
7584
expect(page.commitHashUrl.href).toEqual(`https://github.com/azerothcore/azerothcore-wotlk/commit/${versionRow.core_revision}`);
7685
// expect(page.dbWorldVersion.innerHTML).toContain(worldDbVersion);
77-
expect(page.dbWarning).toBe(null);
78-
expect(component.error).toBe(false);
86+
expect(page.dbWarning(false)).toBeFalsy();
7987
});
8088

8189
it('if the revision hash ends with a "+", it should be stripped in the url', () => {
82-
const { fixture, page } = setup();
90+
const { page } = setup();
8391
when(MockedMysqlQueryService.query('SELECT * FROM version')).thenReturn(
8492
of([
8593
{
@@ -89,50 +97,78 @@ describe('DashboardComponent', () => {
8997
]),
9098
);
9199

92-
fixture.detectChanges();
100+
page.detectChanges();
93101

94102
expect(page.commitHashUrl.href).toEqual(`https://github.com/azerothcore/azerothcore-wotlk/commit/${versionRow.core_revision}`);
95103
});
96104

105+
describe('refresh button', () => {
106+
it('when the refresh button is clicked, it should correctly reload the data', () => {
107+
const { page } = setup();
108+
page.detectChanges();
109+
expect(page.coreVersion.innerHTML).toContain(versionRow.core_version);
110+
111+
const newVersion = 'A new fantastic AzerothCore version!';
112+
when(MockedMysqlQueryService.query('SELECT * FROM version')).thenReturn(
113+
of([
114+
{
115+
...versionRow,
116+
core_version: newVersion,
117+
},
118+
]),
119+
);
120+
page.reloadBtn.click();
121+
page.detectChanges();
122+
123+
expect(page.coreVersion.innerHTML).not.toContain(versionRow.core_version);
124+
expect(page.coreVersion.innerHTML).toContain(newVersion);
125+
});
126+
127+
it('when clicked after an error, it should clear the error out', () => {
128+
const { page } = setup();
129+
130+
when(MockedMysqlQueryService.query(anyString())).thenReturn(of([wrongVersionRow]));
131+
page.detectChanges();
132+
expect(page.dbWarning()).toBeDefined();
133+
134+
when(MockedMysqlQueryService.query(anyString())).thenReturn(of([versionRow]));
135+
page.reloadBtn.click();
136+
page.detectChanges();
137+
138+
expect(page.dbWarning(false)).toBeFalsy();
139+
});
140+
});
141+
97142
it('should correctly give error if the query does not return the data in the expected format', () => {
98-
const { fixture, page, component } = setup();
143+
const { page } = setup();
99144
when(MockedMysqlQueryService.query(anyString())).thenReturn(of([]));
100145
const errorSpy = spyOn(console, 'error');
101146

102-
fixture.detectChanges();
147+
page.detectChanges();
103148

104149
expect(errorSpy).toHaveBeenCalledTimes(1);
105-
expect(page.dbWarning).toBe(null);
106-
expect(component.error).toBe(false);
150+
expect(page.dbWarning(false)).toBeFalsy();
107151
});
108152

109153
it('should correctly give error if the query returns an error', () => {
110-
const { fixture, page, component } = setup();
154+
const { page } = setup();
111155
const error = 'some error';
112156
when(MockedMysqlQueryService.query(anyString())).thenReturn(throwError(error));
113157
const errorSpy = spyOn(console, 'error');
114158

115-
fixture.detectChanges();
159+
page.detectChanges();
116160

117161
expect(errorSpy).toHaveBeenCalledTimes(1);
118162
expect(errorSpy).toHaveBeenCalledWith(error);
119-
expect(page.dbWarning).toBeDefined();
120-
expect(component.error).toBe(true);
163+
expect(page.dbWarning()).toBeDefined();
121164
});
122165

123166
it('should correctly give error if the query returns an error', () => {
124-
const { fixture, page, component } = setup();
125-
const wrongVersionRow: VersionRow = {
126-
core_version: 'ShinCore rev. 2bcedc2859e7 2019-02-17 10:04:09 +0100 (master branch) (Unix, Debug)',
127-
core_revision: '2bcedc2859e7',
128-
db_version: 'SHINDB 335.3 (dev)',
129-
cache_id: 3,
130-
};
167+
const { page } = setup();
131168
when(MockedMysqlQueryService.query(anyString())).thenReturn(of([wrongVersionRow]));
132169

133-
fixture.detectChanges();
170+
page.detectChanges();
134171

135-
expect(page.dbWarning).toBeDefined();
136-
expect(component.error).toBe(true);
172+
expect(page.dbWarning()).toBeDefined();
137173
});
138174
});

apps/keira/src/app/features/dashboard/dashboard.component.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';
1+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from '@angular/core';
22

33
import { AC_DISCORD_URL, KEIRA3_REPO_URL, PAYPAL_DONATE_URL } from '@keira-constants/general';
44
import { ConfigService } from '@keira-shared/services/config.service';
@@ -19,31 +19,31 @@ export class DashboardComponent extends SubscriptionHandler implements OnInit {
1919
protected coreVersions: VersionRow;
2020
protected commitUrl: string;
2121
protected dbWorldVersion: string;
22-
error = false;
22+
protected wrongEmuWarning = false;
2323
protected readonly KEIRA_VERSION = packageInfo.version;
2424
protected readonly PAYPAL_DONATE_URL = PAYPAL_DONATE_URL;
2525
protected readonly AC_DISCORD_URL = AC_DISCORD_URL;
2626
protected readonly KEIRA3_REPO_URL = KEIRA3_REPO_URL;
2727
protected readonly NAVIGATOR_APP_VERSION = window.navigator.userAgent;
2828

29+
private readonly queryService = inject(MysqlQueryService);
30+
protected readonly configService = inject(ConfigService);
31+
private readonly mysqlService = inject(MysqlService);
32+
private readonly changeDetectorRef = inject(ChangeDetectorRef);
33+
2934
get databaseName(): string {
3035
return this.mysqlService.config.database;
3136
}
3237

33-
constructor(
34-
private readonly queryService: MysqlQueryService,
35-
public readonly configService: ConfigService,
36-
private readonly mysqlService: MysqlService,
37-
private readonly changeDetectorRef: ChangeDetectorRef,
38-
) {
39-
super();
38+
ngOnInit(): void {
39+
this.reload();
4040
}
4141

42-
ngOnInit(): void {
42+
protected reload(): void {
43+
this.wrongEmuWarning = false;
4344
this.getCoreVersion();
4445
// this.getWorldDbVersion();
4546
}
46-
4747
private getCoreVersion(): void {
4848
const query = 'SELECT * FROM version';
4949

@@ -56,7 +56,7 @@ export class DashboardComponent extends SubscriptionHandler implements OnInit {
5656

5757
/* istanbul ignore next */
5858
if (!this.coreVersions.db_version.startsWith('ACDB') || !this.coreVersions.core_version.startsWith('AzerothCore')) {
59-
this.error = true;
59+
this.wrongEmuWarning = true;
6060
}
6161

6262
this.changeDetectorRef.markForCheck();
@@ -65,7 +65,7 @@ export class DashboardComponent extends SubscriptionHandler implements OnInit {
6565
}
6666
},
6767
error: (error) => {
68-
this.error = true;
68+
this.wrongEmuWarning = true;
6969
console.error(error);
7070
},
7171
}),

0 commit comments

Comments
 (0)