Skip to content

Commit

Permalink
chore: wip
Browse files Browse the repository at this point in the history
  • Loading branch information
FrancescoBorzi committed Apr 13, 2020
1 parent d6dbd94 commit b91ad94
Showing 1 changed file with 81 additions and 5 deletions.
86 changes: 81 additions & 5 deletions src/app/features/quest/quest-preview/quest-preview.service.spec.ts
Expand Up @@ -14,7 +14,7 @@ import { QuestHandlerService } from '../quest-handler.service';
import { MysqlQueryService } from '@keira-shared/services/mysql-query.service';
import { of } from 'rxjs';

fdescribe('QuestPreviewService', () => {
describe('QuestPreviewService', () => {

beforeEach(() => {
TestBed.configureTestingModule({
Expand All @@ -33,11 +33,17 @@ fdescribe('QuestPreviewService', () => {
const mysqlQueryService = TestBed.inject(MysqlQueryService);
const questTemplateService = TestBed.inject(QuestTemplateService);
const questTemplateAddonService = TestBed.inject(QuestTemplateAddonService);
const MAX_NEXT_QUEST_ID = 7;

spyOn(mysqlQueryService, 'getPrevQuestById').and.callFake((id: number) => of(String(id > 0 ? (id - 1) : 0)).toPromise());
spyOn(mysqlQueryService, 'getNextQuestById').and.callFake((id: number) => of(String(id < 6 ? (id + 1) : 0)).toPromise());
spyOn(mysqlQueryService, 'getQuestTitleById').and.callFake(i => of('Title' + i).toPromise());
spyOn(mysqlQueryService, 'getPrevQuestById').and.callFake(
(id: number) => of(String(id > 0 ? (id - 1) : 0)).toPromise()
);
spyOn(mysqlQueryService, 'getNextQuestById').and.callFake(
(id: number) => of(String(id < MAX_NEXT_QUEST_ID ? (id + 1) : 0)).toPromise()
);

return { service, mysqlQueryService, questTemplateService, questTemplateAddonService };
return { service, mysqlQueryService, questTemplateService, questTemplateAddonService, MAX_NEXT_QUEST_ID };
};

it('handle questTemplate values', () => {
Expand Down Expand Up @@ -133,10 +139,80 @@ fdescribe('QuestPreviewService', () => {
});

describe('prevQuestList', () => {
it('should correctly work when PrevQuestID is set', async () => {
const { service, mysqlQueryService, questTemplateService, questTemplateAddonService } = setup();
questTemplateService.form.controls.ID.setValue(4);
questTemplateAddonService.form.controls.PrevQuestID.setValue(3);

expect(await service.prevQuestList).toEqual([
{ id: 1, title: 'Title1' },
{ id: 2, title: 'Title2' },
{ id: 3, title: 'Title3' },
]);
expect(await service.prevQuestList).toEqual([ // check cache
{ id: 1, title: 'Title1' },
{ id: 2, title: 'Title2' },
{ id: 3, title: 'Title3' },
]);
expect(mysqlQueryService.getPrevQuestById).toHaveBeenCalledTimes(3);
expect(mysqlQueryService.getPrevQuestById).toHaveBeenCalledWith(3);
expect(mysqlQueryService.getPrevQuestById).toHaveBeenCalledWith(2);
expect(mysqlQueryService.getPrevQuestById).toHaveBeenCalledWith(1);
});

it('should correctly work when PrevQuestID is NOT set', async () => {
const { service, mysqlQueryService, questTemplateService, questTemplateAddonService } = setup();
questTemplateService.form.controls.ID.setValue(4);
questTemplateAddonService.form.controls.PrevQuestID.setValue(0);

expect(await service.prevQuestList).toEqual([]);
expect(await service.prevQuestList).toEqual([]); // check cache
expect(mysqlQueryService.getPrevQuestById).toHaveBeenCalledTimes(0);
});
});

describe('nextQuestList', () => {
// TODO
it('should correctly work when NextQuestID is set', async () => {
const { service, mysqlQueryService, questTemplateService, questTemplateAddonService } = setup();
questTemplateService.form.controls.ID.setValue(4);
questTemplateAddonService.form.controls.NextQuestID.setValue(5);

expect(await service.nextQuestList).toEqual([
{ id: 5, title: 'Title5' },
{ id: 6, title: 'Title6' },
{ id: 7, title: 'Title7' },
]);
expect(await service.nextQuestList).toEqual([ // check cache
{ id: 5, title: 'Title5' },
{ id: 6, title: 'Title6' },
{ id: 7, title: 'Title7' },
]);
expect(mysqlQueryService.getNextQuestById).toHaveBeenCalledTimes(3);
expect(mysqlQueryService.getNextQuestById).toHaveBeenCalledWith(5);
expect(mysqlQueryService.getNextQuestById).toHaveBeenCalledWith(6);
expect(mysqlQueryService.getNextQuestById).toHaveBeenCalledWith(7);
});

it('should correctly work when NextQuestID is NOT set', async () => {
const { service, mysqlQueryService, questTemplateService, questTemplateAddonService } = setup();
questTemplateService.form.controls.ID.setValue(4);
questTemplateAddonService.form.controls.NextQuestID.setValue(0);

expect(await service.nextQuestList).toEqual([
{ id: 5, title: 'Title5' },
{ id: 6, title: 'Title6' },
{ id: 7, title: 'Title7' },
]);
expect(await service.nextQuestList).toEqual([ // check cache
{ id: 5, title: 'Title5' },
{ id: 6, title: 'Title6' },
{ id: 7, title: 'Title7' },
]);
expect(mysqlQueryService.getNextQuestById).toHaveBeenCalledTimes(4);
expect(mysqlQueryService.getNextQuestById).toHaveBeenCalledWith(4, true);
expect(mysqlQueryService.getNextQuestById).toHaveBeenCalledWith(5, true);
expect(mysqlQueryService.getNextQuestById).toHaveBeenCalledWith(6, true);
expect(mysqlQueryService.getNextQuestById).toHaveBeenCalledWith(7, true);
});
});
});

0 comments on commit b91ad94

Please sign in to comment.