import { Logger } from '../../../core/shared/domain/Logger'; import { InMemoryRaceRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryRaceRepository'; import { InMemoryLeagueRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryLeagueRepository'; import { InMemoryDriverRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryDriverRepository'; import { InMemoryRaceRegistrationRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryRaceRegistrationRepository'; import { InMemoryResultRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryResultRepository'; import { InMemoryLeagueMembershipRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryLeagueMembershipRepository'; import { InMemoryPenaltyRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryPenaltyRepository'; import { InMemoryProtestRepository } from '../../../adapters/racing/persistence/inmemory/InMemoryProtestRepository'; export class RacesTestContext { public readonly logger: Logger; public readonly raceRepository: InMemoryRaceRepository; public readonly leagueRepository: InMemoryLeagueRepository; public readonly driverRepository: InMemoryDriverRepository; public readonly raceRegistrationRepository: InMemoryRaceRegistrationRepository; public readonly resultRepository: InMemoryResultRepository; public readonly leagueMembershipRepository: InMemoryLeagueMembershipRepository; public readonly penaltyRepository: InMemoryPenaltyRepository; public readonly protestRepository: InMemoryProtestRepository; private constructor() { this.logger = { info: () => {}, debug: () => {}, warn: () => {}, error: () => {}, } as unknown as Logger; this.raceRepository = new InMemoryRaceRepository(this.logger); this.leagueRepository = new InMemoryLeagueRepository(this.logger); this.driverRepository = new InMemoryDriverRepository(this.logger); this.raceRegistrationRepository = new InMemoryRaceRegistrationRepository(this.logger); this.resultRepository = new InMemoryResultRepository(this.logger, this.raceRepository); this.leagueMembershipRepository = new InMemoryLeagueMembershipRepository(this.logger); this.penaltyRepository = new InMemoryPenaltyRepository(this.logger); this.protestRepository = new InMemoryProtestRepository(this.logger); } public static create(): RacesTestContext { return new RacesTestContext(); } public async clear(): Promise { (this.raceRepository as any).races.clear(); this.leagueRepository.clear(); await this.driverRepository.clear(); (this.raceRegistrationRepository as any).registrations.clear(); (this.resultRepository as any).results.clear(); this.leagueMembershipRepository.clear(); (this.penaltyRepository as any).penalties.clear(); (this.protestRepository as any).protests.clear(); } }