TGD-55
This commit is contained in:
parent
97d6b13541
commit
5fd65e815c
2 changed files with 38 additions and 2 deletions
|
|
@ -4,13 +4,19 @@ import {GuestsService} from "../../guests/guests.service";
|
|||
import {GuestsServiceMock} from "../../mocks/guests-service.mock";
|
||||
import {SharedService} from "../../shared/shared.service";
|
||||
import {getModelToken} from "@nestjs/mongoose";
|
||||
import {Versus} from "../../schemas/versus.schema";
|
||||
import {Versus, VersusDocument} from "../../schemas/versus.schema";
|
||||
import {Model} from "mongoose";
|
||||
import {CommandBus, QueryBus} from "@nestjs/cqrs";
|
||||
import {QueryBusMock} from "../../mocks/querybus.mock";
|
||||
|
||||
const mockVersusModel = {
|
||||
aggregate: jest.fn().mockReturnThis(),
|
||||
exec: jest.fn(),
|
||||
}
|
||||
|
||||
describe('VersusService', () => {
|
||||
let service: VersusService;
|
||||
let versusModel: Model<Versus>;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
|
|
@ -18,16 +24,38 @@ describe('VersusService', () => {
|
|||
VersusService,
|
||||
{ provide: GuestsService, useValue: GuestsServiceMock },
|
||||
{ provide: SharedService, useValue: SharedService },
|
||||
{ provide: getModelToken(Versus.name), useValue: Model },
|
||||
{ provide: getModelToken(Versus.name), useValue: mockVersusModel },
|
||||
{ provide: CommandBus, useValue: CommandBus },
|
||||
{ provide: QueryBus, useValue: QueryBusMock },
|
||||
],
|
||||
}).compile();
|
||||
|
||||
service = module.get<VersusService>(VersusService);
|
||||
versusModel = module.get<Model<VersusDocument>>(getModelToken(Versus.name));
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(service).toBeDefined();
|
||||
});
|
||||
|
||||
describe('validateVersusTasksAndResetIfNecessary', () => {
|
||||
it('should reset all tasks if no remaining', async () => {
|
||||
// setup
|
||||
mockVersusModel.exec.mockResolvedValue([]);
|
||||
const markCompletedSpy = jest.spyOn(service, 'markAllAsUncompleted').mockResolvedValue(null);
|
||||
|
||||
// act
|
||||
await service.validateVersusTasksAndResetIfNecessary();
|
||||
|
||||
// validate
|
||||
expect(markCompletedSpy).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should not reset tasks if it is presented', async () => {
|
||||
mockVersusModel.exec.mockReturnValue(['item1', 'item2']);
|
||||
const markCompletedSpy = jest.spyOn(service,'markAllAsUncompleted').mockResolvedValue(null);
|
||||
await service.validateVersusTasksAndResetIfNecessary();
|
||||
expect(markCompletedSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
})
|
||||
});
|
||||
|
|
|
|||
|
|
@ -69,7 +69,15 @@ export class VersusService {
|
|||
return { result: true };
|
||||
}
|
||||
|
||||
async validateVersusTasksAndResetIfNecessary() {
|
||||
const versus = await this.versusModel.aggregate([{ $match: { completed: false } }, { $sample: { size: 1 } }]).exec();
|
||||
if(versus.length == 0 ) {
|
||||
await this.markAllAsUncompleted();
|
||||
}
|
||||
}
|
||||
|
||||
async getVersusTask() {
|
||||
await this.validateVersusTasksAndResetIfNecessary();
|
||||
const rand = await this.versusModel
|
||||
.aggregate([{ $match: { completed: false } }, { $sample: { size: 1 } }])
|
||||
.exec();
|
||||
|
|
|
|||
Loading…
Reference in a new issue