Skip to content

Commit

Permalink
Merge 4d2fde7 into 4eb5452
Browse files Browse the repository at this point in the history
  • Loading branch information
FrancescoBorzi committed May 3, 2020
2 parents 4eb5452 + 4d2fde7 commit 2aa7338
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,13 @@ <h5 id="title" *ngIf="!!service.title">{{ service.title }}</h5>
<span class="r4" *ngIf="!!difficulty.grey"> {{ difficulty.grey }} </span>
</p>

<p *ngIf="!!service.startItem" id="provided-item">
Provided item:<br>
<keira-icon [size]="'small'" [itemId]="service.startItem"></keira-icon>
<strong class="colored"> {{ service.startItemName$ | async }}</strong>
<span class="greyed"> [{{ service.startItem }}]</span>
</p>

<ng-container *ngIf="{ prev: service.prevQuestList$ | async, next: service.nextQuestList$ | async } as questLists">
<ng-container *ngIf="questLists?.prev?.length > 0 || questLists?.next?.length > 0">
<p class="title">Series</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@ class QuestPreviewComponentPage extends PageObject<QuestPreviewComponent> {
get startIcon() { return this.query<HTMLImageElement>('#questStartIcon'); }
get endIcon() { return this.query<HTMLImageElement>('#questEndIcon'); }
get questType() { return this.query<HTMLParagraphElement>('#type'); }
get races() { return this.query<HTMLParagraphElement>('#races'); }
get classes() { return this.query<HTMLParagraphElement>('#classes'); }
get requiredSkill() { return this.query<HTMLParagraphElement>('#requiredSkill'); }
get racesElement() { return this.fixture.nativeElement.querySelector('#races'); }
get providedItem() { return this.query<HTMLParagraphElement>('#provided-item'); }

getRaces(assert = true) { return this.query<HTMLParagraphElement>('#races', assert); }
}

describe('QuestPreviewComponent', () => {
Expand Down Expand Up @@ -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();
});

Expand All @@ -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();
Expand All @@ -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();
});
});
13 changes: 13 additions & 0 deletions src/app/features/quest/quest-preview/quest-preview.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
2 changes: 2 additions & 0 deletions src/app/features/quest/quest-preview/quest-preview.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ export class QuestPreviewService {
get side(): string { return this.helperService.getFactionFromRace(this.questTemplate.AllowableRaces); }
get races(): number[] { return this.helperService.getRaceString(this.questTemplate.AllowableRaces); }
get sharable(): string { return this.questTemplate.Flags & QUEST_FLAG_SHARABLE ? 'Sharable' : 'Not sharable'; }
get startItem(): number { return this.questTemplate.StartItem; }
get startItemName$(): Promise<string> { return this.mysqlQueryService.getItemNameById(this.startItem); }

// get QuestTemplateAddon values
get maxLevel(): string { return String(this.questTemplateAddon.MaxLevel); }
Expand Down

0 comments on commit 2aa7338

Please sign in to comment.