ad/tests/unit/ad/core/pause-ad.service.spec.ts

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);
});
});