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