39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
import { Test, TestingModule } from '@nestjs/testing';
|
|
import { vi } from 'vitest';
|
|
import { ProtestsController } from './ProtestsController';
|
|
import { RaceService } from '../race/RaceService';
|
|
import { ReviewProtestCommandDTO } from '../race/dtos/ReviewProtestCommandDTO';
|
|
|
|
describe('ProtestsController', () => {
|
|
let controller: ProtestsController;
|
|
let raceService: ReturnType<typeof vi.mocked<RaceService>>;
|
|
|
|
beforeEach(async () => {
|
|
const module: TestingModule = await Test.createTestingModule({
|
|
controllers: [ProtestsController],
|
|
providers: [
|
|
{
|
|
provide: RaceService,
|
|
useValue: {
|
|
reviewProtest: vi.fn(),
|
|
},
|
|
},
|
|
],
|
|
}).compile();
|
|
|
|
controller = module.get<ProtestsController>(ProtestsController);
|
|
raceService = vi.mocked(module.get(RaceService));
|
|
});
|
|
|
|
describe('reviewProtest', () => {
|
|
it('should review protest', async () => {
|
|
const protestId = 'protest-123';
|
|
const body: Omit<ReviewProtestCommandDTO, 'protestId'> = { decision: 'upheld', reason: 'Reason' };
|
|
raceService.reviewProtest.mockResolvedValue(undefined);
|
|
|
|
await controller.reviewProtest(protestId, body);
|
|
|
|
expect(raceService.reviewProtest).toHaveBeenCalledWith({ protestId, ...body });
|
|
});
|
|
});
|
|
}); |