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 }}]

-
+

NPC Start: {{ service.mysqlQueryService.getCreatureNameById(q.id) | async }} [{{ q.id }}]

-
+

GO Start: {{ service.mysqlQueryService.getGameObjectNameById(q.id) | async }} [{{ q.id }}]

-
+

NPC End: {{ service.mysqlQueryService.getCreatureNameById(q.id) | async }} [{{ q.id }}]

-
+

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'); }