import { InMemoryRaceRepository } from './InMemoryRaceRepository'; import { RaceData } from '../../../../core/dashboard/application/ports/DashboardRepository'; describe('InMemoryRaceRepository', () => { let repository: InMemoryRaceRepository; beforeEach(() => { repository = new InMemoryRaceRepository(); }); describe('getUpcomingRaces', () => { it('should return empty array when no races for driver', async () => { // When const result = await repository.getUpcomingRaces('driver-1'); // Then expect(result).toEqual([]); }); it('should return races when they exist', async () => { // Given const driverId = 'driver-1'; const races: RaceData[] = [ { id: 'race-1', trackName: 'Spa-Francorchamps', carType: 'GT3', scheduledDate: new Date(), }, ]; repository.addUpcomingRaces(driverId, races); // When const result = await repository.getUpcomingRaces(driverId); // Then expect(result).toEqual(races); }); it('should overwrite races for same driver (idempotency)', async () => { // Given const driverId = 'driver-1'; const races1: RaceData[] = [{ id: 'r1', trackName: 'T1', carType: 'C1', scheduledDate: new Date() }]; const races2: RaceData[] = [{ id: 'r2', trackName: 'T2', carType: 'C2', scheduledDate: new Date() }]; // When repository.addUpcomingRaces(driverId, races1); repository.addUpcomingRaces(driverId, races2); const result = await repository.getUpcomingRaces(driverId); // Then expect(result).toEqual(races2); }); }); });