import { describe, it, expect, beforeEach } from 'vitest'; import { DriversTestContext } from '../DriversTestContext'; import { Driver } from '../../../../core/racing/domain/entities/Driver'; describe('DriverStatsUseCase Integration', () => { let context: DriversTestContext; beforeEach(() => { context = DriversTestContext.create(); context.clear(); }); describe('Success Path', () => { it('should compute driver statistics from race results', async () => { const driverId = 'd7'; const driver = Driver.create({ id: driverId, iracingId: '7', name: 'Stats Driver', country: 'US' }); await context.driverRepository.create(driver); await context.driverStatsRepository.saveDriverStats(driverId, { rating: 1800, totalRaces: 15, wins: 3, podiums: 8, overallRank: 5, safetyRating: 4.2, sportsmanshipRating: 90, dnfs: 1, avgFinish: 4.2, bestFinish: 1, worstFinish: 12, consistency: 80, experienceLevel: 'intermediate' }); const stats = await context.driverStatsUseCase.getDriverStats(driverId); expect(stats).not.toBeNull(); expect(stats!.rating).toBe(1800); expect(stats!.totalRaces).toBe(15); expect(stats!.wins).toBe(3); expect(stats!.podiums).toBe(8); expect(stats!.overallRank).toBe(5); expect(stats!.safetyRating).toBe(4.2); expect(stats!.sportsmanshipRating).toBe(90); expect(stats!.dnfs).toBe(1); expect(stats!.avgFinish).toBe(4.2); expect(stats!.bestFinish).toBe(1); expect(stats!.worstFinish).toBe(12); expect(stats!.consistency).toBe(80); expect(stats!.experienceLevel).toBe('intermediate'); }); it('should handle driver with no race results', async () => { const driverId = 'd8'; const driver = Driver.create({ id: driverId, iracingId: '8', name: 'New Stats Driver', country: 'DE' }); await context.driverRepository.create(driver); const stats = await context.driverStatsUseCase.getDriverStats(driverId); expect(stats).toBeNull(); }); }); describe('Error Handling', () => { it('should return null when driver does not exist', async () => { const nonExistentDriverId = 'non-existent-driver'; const stats = await context.driverStatsUseCase.getDriverStats(nonExistentDriverId); expect(stats).toBeNull(); }); }); });