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>; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [ProtestsController], providers: [ { provide: RaceService, useValue: { reviewProtest: vi.fn(), }, }, ], }).compile(); controller = module.get(ProtestsController); raceService = vi.mocked(module.get(RaceService)); }); describe('reviewProtest', () => { it('should review protest', async () => { const protestId = 'protest-123'; const body: Omit = { decision: 'upheld', reason: 'Reason' }; raceService.reviewProtest.mockResolvedValue(undefined); await controller.reviewProtest(protestId, body); expect(raceService.reviewProtest).toHaveBeenCalledWith({ protestId, ...body }); }); }); });