62 lines
2.2 KiB
TypeScript
62 lines
2.2 KiB
TypeScript
import {
|
|
AD_MESSAGE_PUBLISHER,
|
|
OUTPUT_DATETIME_TRANSFORMER,
|
|
TIMEZONE_FINDER,
|
|
TIME_CONVERTER,
|
|
} from '@modules/ad/ad.di-tokens';
|
|
import { AdMapper } from '@modules/ad/ad.mapper';
|
|
import { PublishMessageWhenAdIsUpdatedDomainEventHandler } from '@modules/ad/core/application/event-handlers/publish-message-when-ad-is-updated.domain-event-handler';
|
|
import { AdEntity } from '@modules/ad/core/domain/ad.entity';
|
|
import { AdUpdatedDomainEvent } from '@modules/ad/core/domain/events/ad.domain-event';
|
|
import { OutputDateTimeTransformer } from '@modules/ad/infrastructure/output-datetime-transformer';
|
|
import { TimeConverter } from '@modules/ad/infrastructure/time-converter';
|
|
import { TimezoneFinder } from '@modules/ad/infrastructure/timezone-finder';
|
|
import { Test, TestingModule } from '@nestjs/testing';
|
|
import { punctualPassengerCreateAdProps } from './ad.fixtures';
|
|
|
|
const mockMessagePublisher = {
|
|
publish: jest.fn(),
|
|
};
|
|
|
|
describe('Publish message when ad is updated domain event handler', () => {
|
|
let updatedDomainEventHandler: PublishMessageWhenAdIsUpdatedDomainEventHandler;
|
|
|
|
beforeAll(async () => {
|
|
const module: TestingModule = await Test.createTestingModule({
|
|
providers: [
|
|
{
|
|
provide: AD_MESSAGE_PUBLISHER,
|
|
useValue: mockMessagePublisher,
|
|
},
|
|
{
|
|
provide: OUTPUT_DATETIME_TRANSFORMER,
|
|
useClass: OutputDateTimeTransformer,
|
|
},
|
|
{
|
|
provide: TIMEZONE_FINDER,
|
|
useClass: TimezoneFinder,
|
|
},
|
|
{
|
|
provide: TIME_CONVERTER,
|
|
useClass: TimeConverter,
|
|
},
|
|
AdMapper,
|
|
PublishMessageWhenAdIsUpdatedDomainEventHandler,
|
|
],
|
|
}).compile();
|
|
|
|
updatedDomainEventHandler =
|
|
module.get<PublishMessageWhenAdIsUpdatedDomainEventHandler>(
|
|
PublishMessageWhenAdIsUpdatedDomainEventHandler,
|
|
);
|
|
});
|
|
|
|
it('should publish a message', () => {
|
|
expect(updatedDomainEventHandler).toBeDefined();
|
|
const ad = AdEntity.create(punctualPassengerCreateAdProps());
|
|
const adUpdatedDomainEvent = new AdUpdatedDomainEvent(ad);
|
|
updatedDomainEventHandler.handle(adUpdatedDomainEvent);
|
|
expect(mockMessagePublisher.publish).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|