43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { AD_REPOSITORY } from '@modules/ad/ad.di-tokens';
|
|
import { PauseAdCommand } from '@modules/ad/core/application/commands/pause-ad/pause-ad.command';
|
|
import { PauseAdService } from '@modules/ad/core/application/commands/pause-ad/pause-ad.service';
|
|
import { AdEntity } from '@modules/ad/core/domain/ad.entity';
|
|
import { Test, TestingModule } from '@nestjs/testing';
|
|
import { punctualPassengerCreateAdProps } from './ad.fixtures';
|
|
|
|
const ad: AdEntity = AdEntity.create(punctualPassengerCreateAdProps());
|
|
jest.spyOn(ad, 'pause');
|
|
|
|
const mockAdRepository = {
|
|
findOneById: jest.fn().mockImplementation(() => ad),
|
|
update: jest.fn(),
|
|
};
|
|
|
|
describe('pause-ad.service', () => {
|
|
let pauseAdService: PauseAdService;
|
|
|
|
beforeAll(async () => {
|
|
const module: TestingModule = await Test.createTestingModule({
|
|
providers: [
|
|
{
|
|
provide: AD_REPOSITORY,
|
|
useValue: mockAdRepository,
|
|
},
|
|
PauseAdService,
|
|
],
|
|
}).compile();
|
|
|
|
pauseAdService = module.get<PauseAdService>(PauseAdService);
|
|
});
|
|
|
|
it('should be defined', () => {
|
|
expect(pauseAdService).toBeDefined();
|
|
});
|
|
|
|
it('should trigger the pause logic and pause the ad from the repository', async () => {
|
|
await pauseAdService.execute(new PauseAdCommand({ id: ad.id }));
|
|
expect(ad.pause).toHaveBeenCalled();
|
|
expect(mockAdRepository.update).toHaveBeenCalledWith(ad);
|
|
});
|
|
});
|