mirror of
https://gitlab.com/mobicoop/v3/service/ad.git
synced 2026-01-10 10:12:40 +00:00
publish integration event when an ad is updated
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user