Skip to content

Commit

Permalink
refactor(shared-kernel): improve naming for clarity
Browse files Browse the repository at this point in the history
  • Loading branch information
Gi-jutsu committed Dec 5, 2024
1 parent e5e7985 commit 0da9793
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 17 deletions.
5 changes: 5 additions & 0 deletions src/shared-kernel/domain/event-emitter.interface.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export interface EventEmitter {
emitAsync(event: string, ...values: any[]): Promise<void>;
}

export const EventEmitterToken = Symbol("EventEmitter");
5 changes: 0 additions & 5 deletions src/shared-kernel/domain/event-emitter.service.ts

This file was deleted.

6 changes: 3 additions & 3 deletions src/shared-kernel/shared-kernel.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { ConfigModule, ConfigService } from "@nestjs/config";
import { APP_GUARD, APP_INTERCEPTOR } from "@nestjs/core";
import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter";
import { ThrottlerGuard, ThrottlerModule } from "@nestjs/throttler";
import { EventEmitterServiceToken } from "./domain/event-emitter.service.js";
import { EventEmitterToken } from "./domain/event-emitter.interface.js";
import { OutboxMessageRepositoryToken } from "./domain/outbox-message/repository.js";
import { DatabaseModule } from "./infrastructure/database/database.module.js";
import { HttpLoggerInterceptor } from "./infrastructure/http-logger.interceptor.js";
Expand Down Expand Up @@ -50,7 +50,7 @@ const MAXIMUM_NUMBER_OF_REQUESTS_PER_MINUTE = 100;
useClass: DrizzleOutboxMessageRepository,
},
{
provide: EventEmitterServiceToken,
provide: EventEmitterToken,
useValue: (await import("@nestjs/event-emitter")).EventEmitter2,
},
{
Expand All @@ -61,7 +61,7 @@ const MAXIMUM_NUMBER_OF_REQUESTS_PER_MINUTE = 100;
{
provide: ProcessOutboxMessagesUseCase,
useFactory: createFactoryFromConstructor(ProcessOutboxMessagesUseCase),
inject: [EventEmitter2, OutboxMessageRepositoryToken],
inject: [OutboxMessageRepositoryToken, EventEmitter2],
},
],
exports: [ConfigService, DatabaseModule, OutboxMessageRepositoryToken],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import type { EventEmitterService } from "@shared-kernel/domain/event-emitter.service.js";
import type { EventEmitter } from "@shared-kernel/domain/event-emitter.interface.js";
import { InMemoryOutboxMessageRepository } from "@shared-kernel/infrastructure/repositories/in-memory-outbox-message.repository.js";
import { DateTime, Settings } from "luxon";
import { afterAll, beforeAll, describe, expect, it } from "vitest";
import { ProcessOutboxMessagesUseCase } from "./use-case.js";

class MockEventEmitterService implements EventEmitterService {
class MockEventEmitter implements EventEmitter {
emittedEvents: { event: string; values: any[] }[] = [];
shouldThrowError = false;
errorMessage: string = "An error occurred";
Expand Down Expand Up @@ -152,11 +152,11 @@ describe("ProcessOutboxMessagesUseCase", () => {

function createSystemUnderTest() {
const allOutboxMessages = new InMemoryOutboxMessageRepository();
const mockedEventEmitter = new MockEventEmitterService();
const mockedEventEmitter = new MockEventEmitter();

const useCase = new ProcessOutboxMessagesUseCase(
mockedEventEmitter,
allOutboxMessages
allOutboxMessages,
mockedEventEmitter
);

return { allOutboxMessages, mockedEventEmitter, useCase };
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import type { EventEmitterService } from "@shared-kernel/domain/event-emitter.service.js";
import type { EventEmitter } from "@shared-kernel/domain/event-emitter.interface.js";
import type { OutboxMessageRepository } from "@shared-kernel/domain/outbox-message/repository.js";

export class ProcessOutboxMessagesUseCase {
constructor(
private readonly allDomainEvents: EventEmitterService,
private readonly allOutboxMessages: OutboxMessageRepository
private readonly allOutboxMessages: OutboxMessageRepository,
private readonly eventEmitter: EventEmitter
) {}

async execute() {
Expand All @@ -14,7 +14,7 @@ export class ProcessOutboxMessagesUseCase {
const { eventType, payload } = message.properties;

try {
await this.allDomainEvents.emitAsync(eventType, payload);
await this.eventEmitter.emitAsync(eventType, payload);
message.process();
} catch (error) {
message.fail(error.message);
Expand Down

0 comments on commit 0da9793

Please sign in to comment.