From 62c7ecd1626df1be24c1df9fd518ef1bcf4b9031 Mon Sep 17 00:00:00 2001 From: fidel Date: Thu, 5 Jun 2025 15:07:13 +0100 Subject: [PATCH 1/3] added some basic tests for userController --- src/user/user.controller.spec.ts | 97 +++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 3 deletions(-) diff --git a/src/user/user.controller.spec.ts b/src/user/user.controller.spec.ts index 338bf3a..38887b4 100644 --- a/src/user/user.controller.spec.ts +++ b/src/user/user.controller.spec.ts @@ -1,20 +1,111 @@ import { Test, TestingModule } from '@nestjs/testing'; import { UserController } from './user.controller'; import { UserService } from './user.service'; +import { CreateUserDto } from './dto/create-user.dto'; +import { UpdateUserDto } from './dto/update-user.dto'; describe('UserController', () => { let controller: UserController; + let service: UserService; + + const mockUser = { + name: 'Alice', + email: 'alice@mail.com', + password: 'secret', + }; + + const mockService = { + create: jest.fn(), + findAll: jest.fn(), + findOne: jest.fn(), + update: jest.fn(), + remove: jest.fn(), + }; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [UserController], - providers: [UserService], + providers: [{ provide: UserService, useValue: mockService }], }).compile(); controller = module.get(UserController); + service = module.get(UserService); + + jest.clearAllMocks(); }); - it('should be defined', () => { - expect(controller).toBeDefined(); + describe('create()', () => { + it('should create and return a user ID', () => { + mockService.create.mockReturnValue(1); + const dto: CreateUserDto = mockUser; + const result = controller.create(dto); + expect(result).toBe(1); + expect(mockService.create).toHaveBeenCalledWith(dto); + }); + + it('should handle create failure (mocked error)', () => { + mockService.create.mockImplementation(() => { + throw new Error('Create failed'); + }); + expect(() => controller.create(mockUser)).toThrow('Create failed'); + }); + }); + + describe('findAll()', () => { + it('should return all users', () => { + mockService.findAll.mockReturnValue([mockUser]); + const result = controller.findAll(); + expect(result).toEqual([mockUser]); + }); + + it('should return an empty array when no users exist', () => { + mockService.findAll.mockReturnValue([]); + const result = controller.findAll(); + expect(result).toEqual([]); + }); + }); + + describe('findOne()', () => { + it('should return a user by ID', () => { + mockService.findOne.mockReturnValue(mockUser); + const result = controller.findOne(1); + expect(result).toEqual(mockUser); + }); + + it('should return "user not found" if user doesn’t exist', () => { + mockService.findOne.mockReturnValue(undefined); + const result = controller.findOne(999); + expect(result).toBe('user not found'); + }); + }); + + describe('update()', () => { + it('should return success message when update is successful', () => { + mockService.update.mockReturnValue(true); + const dto: UpdateUserDto = { name: 'Updated' }; + const result = controller.update(1, dto); + expect(result).toBe('user updated'); + }); + + it('should return failure message when update fails', () => { + mockService.update.mockReturnValue(false); + const result = controller.update(999, { name: 'Nope' }); + expect(result).toBe('user not updated'); + }); + }); + + describe('remove()', () => { + it('should return success message when user is deleted', () => { + mockService.remove.mockReturnValue(true); + const result = controller.remove(1); + expect(result).toBe('user deleted'); + }); + + it('should return failure message when user is not found', () => { + mockService.remove.mockReturnValue(false); + const result = controller.remove(999); + expect(result).toBe('user could not be deleted'); + }); }); }); + From 66c69bb7acbc55f5ae0c2971e545e5cbd229a3d1 Mon Sep 17 00:00:00 2001 From: fidel Date: Thu, 12 Jun 2025 14:50:26 +0100 Subject: [PATCH 2/3] fixed pretty print --- src/user/user.controller.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/user/user.controller.spec.ts b/src/user/user.controller.spec.ts index 38887b4..cd902f9 100644 --- a/src/user/user.controller.spec.ts +++ b/src/user/user.controller.spec.ts @@ -108,4 +108,3 @@ describe('UserController', () => { }); }); }); - From a19da920778416f80d8d1b036e2596b643f97cda Mon Sep 17 00:00:00 2001 From: fidel Date: Thu, 12 Jun 2025 14:58:55 +0100 Subject: [PATCH 3/3] added eslint comment to fix pretty print --- src/user/user.controller.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/user/user.controller.spec.ts b/src/user/user.controller.spec.ts index cd902f9..f910008 100644 --- a/src/user/user.controller.spec.ts +++ b/src/user/user.controller.spec.ts @@ -6,6 +6,7 @@ import { UpdateUserDto } from './dto/update-user.dto'; describe('UserController', () => { let controller: UserController; + // eslint-disable-next-line @typescript-eslint/no-unused-vars let service: UserService; const mockUser = {