70 lines
1.8 KiB
TypeScript
70 lines
1.8 KiB
TypeScript
import { Test, TestingModule } from '@nestjs/testing';
|
|
import { UsersRepository } from '../../adapters/secondaries/users.repository';
|
|
import { DeleteUserCommand } from '../../commands/delete-user.command';
|
|
import { DeleteUserUseCase } from '../../domain/usecases/delete-user.usecase';
|
|
|
|
const usersMock = [
|
|
{
|
|
uuid: 'bb281075-1b98-4456-89d6-c643d3044a91',
|
|
firstName: 'John',
|
|
lastName: 'Doe',
|
|
email: 'john.doe@email.com',
|
|
},
|
|
{
|
|
uuid: 'bb281075-1b98-4456-89d6-c643d3044a92',
|
|
firstName: 'Jane',
|
|
lastName: 'Doe',
|
|
email: 'jane.doe@email.com',
|
|
},
|
|
{
|
|
uuid: 'bb281075-1b98-4456-89d6-c643d3044a93',
|
|
firstName: 'Jimmy',
|
|
lastName: 'Doe',
|
|
email: 'jimmy.doe@email.com',
|
|
},
|
|
];
|
|
|
|
const mockUsersRepository = {
|
|
delete: jest.fn().mockImplementation((uuid: string) => {
|
|
usersMock.forEach((user, index) => {
|
|
if (user.uuid === uuid) {
|
|
usersMock.splice(index, 1);
|
|
return Promise.resolve();
|
|
}
|
|
});
|
|
}),
|
|
};
|
|
|
|
describe('DeleteUserUseCase', () => {
|
|
let deleteUserUseCase: DeleteUserUseCase;
|
|
|
|
beforeAll(async () => {
|
|
const module: TestingModule = await Test.createTestingModule({
|
|
providers: [
|
|
{
|
|
provide: UsersRepository,
|
|
useValue: mockUsersRepository,
|
|
},
|
|
DeleteUserUseCase,
|
|
],
|
|
}).compile();
|
|
|
|
deleteUserUseCase = module.get<DeleteUserUseCase>(DeleteUserUseCase);
|
|
});
|
|
|
|
it('should be defined', () => {
|
|
expect(deleteUserUseCase).toBeDefined();
|
|
});
|
|
|
|
describe('execute', () => {
|
|
it('should delete an User', async () => {
|
|
const savedUuid = usersMock[0].uuid;
|
|
const deleteUserCommand = new DeleteUserCommand(savedUuid);
|
|
await deleteUserUseCase.execute(deleteUserCommand);
|
|
|
|
const deletedUser = usersMock.find((user) => user.uuid === savedUuid);
|
|
expect(deletedUser).toBeUndefined();
|
|
});
|
|
});
|
|
});
|