import { UserDeletedMessageHandler } from '@modules/authentication/interface/message-handlers/user-deleted.message-handler'; import { CommandBus } from '@nestjs/cqrs'; import { Test, TestingModule } from '@nestjs/testing'; const userDeletedMessage = '{"id":"2436d413-b7c7-429e-9792-b78edc17b3ca"}'; const userIdNotProvidedDeletedMessage = '{"userId":"2436d413-b7c7-429e-9792-b78edc17b300"}'; const mockCommandBus = { execute: jest.fn().mockImplementationOnce(() => 'john.doe@email.com'), }; describe('User Deleted Message Handler', () => { let userDeletedMessageHandler: UserDeletedMessageHandler; beforeAll(async () => { const module: TestingModule = await Test.createTestingModule({ providers: [ { provide: CommandBus, useValue: mockCommandBus, }, UserDeletedMessageHandler, ], }).compile(); userDeletedMessageHandler = module.get( UserDeletedMessageHandler, ); }); afterEach(async () => { jest.clearAllMocks(); }); it('should be defined', () => { expect(userDeletedMessageHandler).toBeDefined(); }); it('should delete an authentication', async () => { jest.spyOn(mockCommandBus, 'execute'); await userDeletedMessageHandler.userDeleted(userDeletedMessage); expect(mockCommandBus.execute).toHaveBeenCalledTimes(1); }); it('should not update an authentication if userId is not provided', async () => { jest.spyOn(mockCommandBus, 'execute'); await userDeletedMessageHandler.userDeleted( userIdNotProvidedDeletedMessage, ); expect(mockCommandBus.execute).toHaveBeenCalledTimes(0); }); });