import { Test, TestingModule } from '@nestjs/testing'; import { RedisConfigurationRepository } from '../../adapters/secondaries/redis-configuration.repository'; import { DeleteConfigurationCommand } from '../../commands/delete-configuration.command'; import { DeleteConfigurationRequest } from '../../domain/dtos/delete-configuration.request'; import { DeleteConfigurationUseCase } from '../../domain/usecases/delete-configuration.usecase'; const mockRedisConfigurationRepository = { del: jest.fn().mockResolvedValue(undefined), }; describe('DeleteConfigurationUseCase', () => { let deleteConfigurationUseCase: DeleteConfigurationUseCase; beforeAll(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ { provide: RedisConfigurationRepository, useValue: mockRedisConfigurationRepository, }, DeleteConfigurationUseCase, ], }).compile(); deleteConfigurationUseCase = module.get( DeleteConfigurationUseCase, ); }); it('should be defined', () => { expect(deleteConfigurationUseCase).toBeDefined(); }); describe('execute', () => { it('should delete a key', async () => { jest.spyOn(mockRedisConfigurationRepository, 'del'); const deleteConfigurationRequest: DeleteConfigurationRequest = { domain: 'my-domain', key: 'my-key', }; await deleteConfigurationUseCase.execute( new DeleteConfigurationCommand(deleteConfigurationRequest), ); expect(mockRedisConfigurationRepository.del).toHaveBeenCalledTimes(1); }); }); });