From 4eb5452556d64921a9c614b838673ae0ad4590e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Francesco=20Borz=C3=AC?=
Date: Sun, 3 May 2020 16:46:42 +0200
Subject: [PATCH] test(quest-preview): add integration tests (#659)
* test(quest-preview): add integration tests
* chore: wip
---
.../creature-questender.integration.spec.ts | 16 +++++++++++++++-
.../creature-queststarter.integration.spec.ts | 16 +++++++++++++++-
.../gameobject-questender.integration.spec.ts | 16 +++++++++++++++-
.../gameobject-queststarter.integration.spec.ts | 16 +++++++++++++++-
.../quest-preview/quest-preview.component.html | 8 ++++----
.../quest-template-addon.integration.spec.ts | 14 +++++++++++++-
.../quest-template.integration.spec.ts | 14 +++++++++++++-
src/app/shared/testing/editor-page-object.ts | 1 +
8 files changed, 91 insertions(+), 10 deletions(-)
diff --git a/src/app/features/quest/creature-questender/creature-questender.integration.spec.ts b/src/app/features/quest/creature-questender/creature-questender.integration.spec.ts
index 9d946a3105..a002049f48 100644
--- a/src/app/features/quest/creature-questender/creature-questender.integration.spec.ts
+++ b/src/app/features/quest/creature-questender/creature-questender.integration.spec.ts
@@ -10,7 +10,9 @@ import { QuestHandlerService } from '../quest-handler.service';
import { QuestModule } from '../quest.module';
import { QuestPreviewService } from '../quest-preview/quest-preview.service';
-class CreatureQuestenderPage extends MultiRowEditorPageObject {}
+class CreatureQuestenderPage extends MultiRowEditorPageObject {
+ get questPreviewNpcEnd() { return this.query(`${this.PREVIEW_CONTAINER_SELECTOR} #npc-end`); }
+}
describe('CreatureQuestender integration tests', () => {
const id = 1234;
@@ -134,6 +136,18 @@ describe('CreatureQuestender integration tests', () => {
);
page.removeElement();
});
+
+ it('changing a property should be reflected in the quest preview', () => {
+ const { page } = setup(true);
+ const value = 1234;
+
+ page.addNewRow();
+ page.clickRowOfDatatable(0);
+ page.setInputValueById('id', value);
+
+ expect(page.questPreviewNpcEnd.innerText).toContain(`[${value}]`);
+ page.removeElement();
+ });
});
describe('Editing existing', () => {
diff --git a/src/app/features/quest/creature-queststarter/creature-queststarter.integration.spec.ts b/src/app/features/quest/creature-queststarter/creature-queststarter.integration.spec.ts
index 3136e24d29..9b3b51e79f 100644
--- a/src/app/features/quest/creature-queststarter/creature-queststarter.integration.spec.ts
+++ b/src/app/features/quest/creature-queststarter/creature-queststarter.integration.spec.ts
@@ -11,7 +11,9 @@ import { QuestHandlerService } from '../quest-handler.service';
import { QuestModule } from '../quest.module';
import { QuestPreviewService } from '../quest-preview/quest-preview.service';
-class CreatureQueststarterPage extends MultiRowEditorPageObject {}
+class CreatureQueststarterPage extends MultiRowEditorPageObject {
+ get questPreviewNpcStart() { return this.query(`${this.PREVIEW_CONTAINER_SELECTOR} #npc-start`); }
+}
describe('CreatureQueststarter integration tests', () => {
const id = 1234;
@@ -136,6 +138,18 @@ describe('CreatureQueststarter integration tests', () => {
);
page.removeElement();
});
+
+ it('changing a property should be reflected in the quest preview', () => {
+ const { page } = setup(true);
+ const value = 1234;
+
+ page.addNewRow();
+ page.clickRowOfDatatable(0);
+ page.setInputValueById('id', value);
+
+ expect(page.questPreviewNpcStart.innerText).toContain(`[${value}]`);
+ page.removeElement();
+ });
});
describe('Editing existing', () => {
diff --git a/src/app/features/quest/gameobject-questender/gameobject-questender.integration.spec.ts b/src/app/features/quest/gameobject-questender/gameobject-questender.integration.spec.ts
index 454780811a..f1dcc52f0f 100644
--- a/src/app/features/quest/gameobject-questender/gameobject-questender.integration.spec.ts
+++ b/src/app/features/quest/gameobject-questender/gameobject-questender.integration.spec.ts
@@ -10,7 +10,9 @@ import { QuestHandlerService } from '../quest-handler.service';
import { QuestModule } from '../quest.module';
import { QuestPreviewService } from '../quest-preview/quest-preview.service';
-class GameobjectQuestenderPage extends MultiRowEditorPageObject {}
+class GameobjectQuestenderPage extends MultiRowEditorPageObject {
+ get questPreviewGoEnd() { return this.query(`${this.PREVIEW_CONTAINER_SELECTOR} #go-end`); }
+}
describe('GameobjectQuestender integration tests', () => {
const id = 1234;
@@ -136,6 +138,18 @@ describe('GameobjectQuestender integration tests', () => {
);
page.removeElement();
});
+
+ it('changing a property should be reflected in the quest preview', () => {
+ const { page } = setup(true);
+ const value = 1234;
+
+ page.addNewRow();
+ page.clickRowOfDatatable(0);
+ page.setInputValueById('id', value);
+
+ expect(page.questPreviewGoEnd.innerText).toContain(`[${value}]`);
+ page.removeElement();
+ });
});
describe('Editing existing', () => {
diff --git a/src/app/features/quest/gameobject-queststarter/gameobject-queststarter.integration.spec.ts b/src/app/features/quest/gameobject-queststarter/gameobject-queststarter.integration.spec.ts
index 52fea7ee3b..d87211cf29 100644
--- a/src/app/features/quest/gameobject-queststarter/gameobject-queststarter.integration.spec.ts
+++ b/src/app/features/quest/gameobject-queststarter/gameobject-queststarter.integration.spec.ts
@@ -10,7 +10,9 @@ import { QuestHandlerService } from '../quest-handler.service';
import { QuestModule } from '../quest.module';
import { QuestPreviewService } from '../quest-preview/quest-preview.service';
-class GameobjectQueststarterPage extends MultiRowEditorPageObject {}
+class GameobjectQueststarterPage extends MultiRowEditorPageObject {
+ get questPreviewGoStart() { return this.query(`${this.PREVIEW_CONTAINER_SELECTOR} #go-start`); }
+}
describe('GameobjectQueststarter integration tests', () => {
const id = 1234;
@@ -135,6 +137,18 @@ describe('GameobjectQueststarter integration tests', () => {
);
page.removeElement();
});
+
+ it('changing a property should be reflected in the quest preview', () => {
+ const { page } = setup(true);
+ const value = 1234;
+
+ page.addNewRow();
+ page.clickRowOfDatatable(0);
+ page.setInputValueById('id', value);
+
+ expect(page.questPreviewGoStart.innerText).toContain(`[${value}]`);
+ page.removeElement();
+ });
});
describe('Editing existing', () => {
diff --git a/src/app/features/quest/quest-preview/quest-preview.component.html b/src/app/features/quest/quest-preview/quest-preview.component.html
index 8f6b80e569..7797fb6c39 100644
--- a/src/app/features/quest/quest-preview/quest-preview.component.html
+++ b/src/app/features/quest/quest-preview/quest-preview.component.html
@@ -33,23 +33,23 @@ {{ service.title }}
{{ service.questStarterItem$ | async }} [{{ qitem }}]
- 0">
+
0" id="npc-start">
NPC Start: {{ service.mysqlQueryService.getCreatureNameById(q.id) | async }} [{{ q.id }}]
-
0">
+
0" id="go-start">
GO Start: {{ service.mysqlQueryService.getGameObjectNameById(q.id) | async }} [{{ q.id }}]
-
0">
+
0" id="npc-end">
NPC End: {{ service.mysqlQueryService.getCreatureNameById(q.id) | async }} [{{ q.id }}]
-
0">
+
0" id="go-end">
GO End: {{ service.mysqlQueryService.getGameObjectNameById(q.id) | async }} [{{ q.id }}]
diff --git a/src/app/features/quest/quest-template-addon/quest-template-addon.integration.spec.ts b/src/app/features/quest/quest-template-addon/quest-template-addon.integration.spec.ts
index 7df7cb873d..62fafe3fd4 100644
--- a/src/app/features/quest/quest-template-addon/quest-template-addon.integration.spec.ts
+++ b/src/app/features/quest/quest-template-addon/quest-template-addon.integration.spec.ts
@@ -15,7 +15,9 @@ import { SqliteService } from '@keira-shared/services/sqlite.service';
import { QuestModule } from '../quest.module';
import { QuestPreviewService } from '../quest-preview/quest-preview.service';
-class QuestTemplateAddonPage extends EditorPageObject
{}
+class QuestTemplateAddonPage extends EditorPageObject {
+ get questPreviewReqLevel() { return this.query(`${this.PREVIEW_CONTAINER_SELECTOR} #minlevel`); }
+}
describe('QuestTemplateAddon integration tests', () => {
@@ -130,6 +132,16 @@ describe('QuestTemplateAddon integration tests', () => {
expect(querySpy.calls.mostRecent().args[0]).toContain(expectedQuery);
page.removeElement();
});
+
+ it('changing a property should be reflected in the quest preview', () => {
+ const { page } = setup(true);
+ const value = 80;
+
+ page.setInputValueById('MaxLevel', value);
+
+ expect(page.questPreviewReqLevel.innerText).toContain(`0 - ${value}`);
+ page.removeElement();
+ });
});
describe('Editing existing', () => {
diff --git a/src/app/features/quest/quest-template/quest-template.integration.spec.ts b/src/app/features/quest/quest-template/quest-template.integration.spec.ts
index e9e87115b5..e3203bbd85 100644
--- a/src/app/features/quest/quest-template/quest-template.integration.spec.ts
+++ b/src/app/features/quest/quest-template/quest-template.integration.spec.ts
@@ -10,7 +10,9 @@ import { QuestHandlerService } from '../quest-handler.service';
import { QuestModule } from '../quest.module';
import { QuestPreviewService } from '../quest-preview/quest-preview.service';
-class QuestTemplatePage extends EditorPageObject {}
+class QuestTemplatePage extends EditorPageObject {
+ get questPreviewTitle() { return this.query(`${this.PREVIEW_CONTAINER_SELECTOR} #title`); }
+}
describe('QuestTemplate integration tests', () => {
@@ -114,6 +116,16 @@ describe('QuestTemplate integration tests', () => {
expect(querySpy.calls.mostRecent().args[0]).toContain('Shin');
page.removeElement();
});
+
+ it('changing a property should be reflected in the quest preview', () => {
+ const { page } = setup(true);
+ const value = 'Fix all AzerothCore bugs';
+
+ page.setInputValueById('LogTitle', value);
+
+ expect(page.questPreviewTitle.innerText).toContain(value);
+ page.removeElement();
+ });
});
describe('Editing existing', () => {
diff --git a/src/app/shared/testing/editor-page-object.ts b/src/app/shared/testing/editor-page-object.ts
index 94f95d7720..22f5ddf43a 100644
--- a/src/app/shared/testing/editor-page-object.ts
+++ b/src/app/shared/testing/editor-page-object.ts
@@ -6,6 +6,7 @@ import { QueryOutputComponentPage } from '../modules/query-output/query-output.c
import { TableRow } from '../types/general';
export abstract class EditorPageObject extends PageObject {
+ public readonly PREVIEW_CONTAINER_SELECTOR = '.preview-container';
protected readonly queryPo: QueryOutputComponentPage;
get queryTypeSwitchWrapper() { return this.query('.query-type-switch'); }