40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import {
|
|
DashboardEventPublisher,
|
|
DashboardAccessedEvent,
|
|
DashboardErrorEvent,
|
|
} from '../../core/dashboard/application/ports/DashboardEventPublisher';
|
|
|
|
export class InMemoryEventPublisher implements DashboardEventPublisher {
|
|
private dashboardAccessedEvents: DashboardAccessedEvent[] = [];
|
|
private dashboardErrorEvents: DashboardErrorEvent[] = [];
|
|
private shouldFail: boolean = false;
|
|
|
|
async publishDashboardAccessed(event: DashboardAccessedEvent): Promise<void> {
|
|
if (this.shouldFail) throw new Error('Event publisher failed');
|
|
this.dashboardAccessedEvents.push(event);
|
|
}
|
|
|
|
async publishDashboardError(event: DashboardErrorEvent): Promise<void> {
|
|
if (this.shouldFail) throw new Error('Event publisher failed');
|
|
this.dashboardErrorEvents.push(event);
|
|
}
|
|
|
|
getDashboardAccessedEventCount(): number {
|
|
return this.dashboardAccessedEvents.length;
|
|
}
|
|
|
|
getDashboardErrorEventCount(): number {
|
|
return this.dashboardErrorEvents.length;
|
|
}
|
|
|
|
clear(): void {
|
|
this.dashboardAccessedEvents = [];
|
|
this.dashboardErrorEvents = [];
|
|
this.shouldFail = false;
|
|
}
|
|
|
|
setShouldFail(shouldFail: boolean): void {
|
|
this.shouldFail = shouldFail;
|
|
}
|
|
}
|