diff --git a/src/app/features/quest/quest-preview/quest-preview.component.spec.ts b/src/app/features/quest/quest-preview/quest-preview.component.spec.ts index 645a1bb572..dc3b3dceea 100644 --- a/src/app/features/quest/quest-preview/quest-preview.component.spec.ts +++ b/src/app/features/quest/quest-preview/quest-preview.component.spec.ts @@ -16,10 +16,11 @@ class QuestPreviewComponentPage extends PageObject { get startIcon() { return this.query('#questStartIcon'); } get endIcon() { return this.query('#questEndIcon'); } get questType() { return this.query('#type'); } - get races() { return this.query('#races'); } get classes() { return this.query('#classes'); } get requiredSkill() { return this.query('#requiredSkill'); } - get racesElement() { return this.fixture.nativeElement.querySelector('#races'); } + get providedItem() { return this.query('#provided-item'); } + + getRaces(assert = true) { return this.query('#races', assert); } } describe('QuestPreviewComponent', () => { @@ -113,13 +114,13 @@ describe('QuestPreviewComponent', () => { fixture.detectChanges(); - expect(page.races.innerText).toContain('Orc'); - expect(page.races.innerText).toContain('Night Elf'); + expect(page.getRaces().innerText).toContain('Orc'); + expect(page.getRaces().innerText).toContain('Night Elf'); // in case of "Side" sideSpy.and.returnValue('Alliance'); fixture.detectChanges(); - expect(page.racesElement).toBeFalsy(); + expect(page.getRaces(false)).toBeFalsy(); page.removeElement(); }); @@ -137,7 +138,6 @@ describe('QuestPreviewComponent', () => { it('should show required skill', async() => { const { fixture, service, page, questTemplateAddonService } = setup(); spyOnProperty(service, 'requiredSkill$', 'get').and.returnValue(Promise.resolve('Jewelcrafting')); - questTemplateAddonService.form.controls.RequiredSkillID.setValue(755); fixture.detectChanges(); await fixture.whenStable(); @@ -150,4 +150,20 @@ describe('QuestPreviewComponent', () => { expect(page.requiredSkill.innerText).toContain('(10)'); page.removeElement(); }); + + it('should show provided item (start item)', async() => { + const { fixture, service, page } = setup(); + const mockStartItem = 123456; + const mockStartItemName = 'Sword of AzerothCore'; + spyOnProperty(service, 'startItem', 'get').and.returnValue(mockStartItem); + spyOnProperty(service, 'startItemName$', 'get').and.returnValue(Promise.resolve(mockStartItemName)); + + fixture.detectChanges(); + await fixture.whenStable(); + fixture.detectChanges(); + + expect(page.providedItem.innerText).toContain(`[${mockStartItem}]`); + expect(page.providedItem.innerText).toContain(mockStartItemName); + page.removeElement(); + }); }); diff --git a/src/app/features/quest/quest-preview/quest-preview.service.spec.ts b/src/app/features/quest/quest-preview/quest-preview.service.spec.ts index e0c12c8c21..3cecd34aa9 100644 --- a/src/app/features/quest/quest-preview/quest-preview.service.spec.ts +++ b/src/app/features/quest/quest-preview/quest-preview.service.spec.ts @@ -117,6 +117,19 @@ describe('QuestPreviewService', () => { expect(service.sharable).toBe('Not sharable'); }); + it('start item', async () => { + const { service, questTemplateService, mysqlQueryService } = setup(); + const mockStartItem = 123456; + const mockStartItemName = 'Sword of AzerothCore'; + spyOn(mysqlQueryService, 'getItemNameById').and.callFake(() => of(mockStartItemName).toPromise()); + + questTemplateService.form.controls.StartItem.setValue(mockStartItem); + + expect(service.startItem).toEqual(mockStartItem); + expect(await service.startItemName$).toEqual(mockStartItemName); + expect(mysqlQueryService.getItemNameById).toHaveBeenCalledWith(mockStartItem); + }); + it('handle questTemplateAddon values', () => { const { service, questTemplateAddonService } = setup();