import { LeagueEventPublisher, LeagueCreatedEvent, LeagueUpdatedEvent, LeagueDeletedEvent, LeagueAccessedEvent, LeagueRosterAccessedEvent, } from '../../../core/leagues/application/ports/LeagueEventPublisher'; export class InMemoryLeagueEventPublisher implements LeagueEventPublisher { private leagueCreatedEvents: LeagueCreatedEvent[] = []; private leagueUpdatedEvents: LeagueUpdatedEvent[] = []; private leagueDeletedEvents: LeagueDeletedEvent[] = []; private leagueAccessedEvents: LeagueAccessedEvent[] = []; private leagueRosterAccessedEvents: LeagueRosterAccessedEvent[] = []; async emitLeagueCreated(event: LeagueCreatedEvent): Promise { this.leagueCreatedEvents.push(event); } async emitLeagueUpdated(event: LeagueUpdatedEvent): Promise { this.leagueUpdatedEvents.push(event); } async emitLeagueDeleted(event: LeagueDeletedEvent): Promise { this.leagueDeletedEvents.push(event); } async emitLeagueAccessed(event: LeagueAccessedEvent): Promise { this.leagueAccessedEvents.push(event); } async emitLeagueRosterAccessed(event: LeagueRosterAccessedEvent): Promise { this.leagueRosterAccessedEvents.push(event); } getLeagueCreatedEventCount(): number { return this.leagueCreatedEvents.length; } getLeagueUpdatedEventCount(): number { return this.leagueUpdatedEvents.length; } getLeagueDeletedEventCount(): number { return this.leagueDeletedEvents.length; } getLeagueAccessedEventCount(): number { return this.leagueAccessedEvents.length; } getLeagueRosterAccessedEventCount(): number { return this.leagueRosterAccessedEvents.length; } clear(): void { this.leagueCreatedEvents = []; this.leagueUpdatedEvents = []; this.leagueDeletedEvents = []; this.leagueAccessedEvents = []; this.leagueRosterAccessedEvents = []; } getLeagueCreatedEvents(): LeagueCreatedEvent[] { return [...this.leagueCreatedEvents]; } getLeagueUpdatedEvents(): LeagueUpdatedEvent[] { return [...this.leagueUpdatedEvents]; } getLeagueDeletedEvents(): LeagueDeletedEvent[] { return [...this.leagueDeletedEvents]; } getLeagueAccessedEvents(): LeagueAccessedEvent[] { return [...this.leagueAccessedEvents]; } getLeagueRosterAccessedEvents(): LeagueRosterAccessedEvent[] { return [...this.leagueRosterAccessedEvents]; } }