From fd864637cfcbb1f3197afbb0a960ead0ae5b6a05 Mon Sep 17 00:00:00 2001 From: ejim11 Date: Mon, 3 Feb 2025 22:36:42 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20Added=20user=20interface=20and=20fi?= =?UTF-8?q?ndUserByEmail=20test=20cases?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/users/providers/users.service.spec.ts | 53 +++++++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/src/users/providers/users.service.spec.ts b/src/users/providers/users.service.spec.ts index 8602f28..8cca59a 100644 --- a/src/users/providers/users.service.spec.ts +++ b/src/users/providers/users.service.spec.ts @@ -17,6 +17,33 @@ import { accountType } from '../enums/account-type.enum'; describe('UsersService', () => { let service: UsersService; + // Assuming you have a User interface like this + interface User { + id: number; + email: string; + firstName: string; + lastName: string; + password: string; + role: Role; + accountType: accountType; + events: any[]; + // ... other properties + } + + // Mock the provider + const mockUser: User = { + id: 123, + email: 'test@example.com', + firstName: 'Ejim', + lastName: 'Favour', + password: 'jndomnfondo', + role: Role.EVENTPURCHASER, + accountType: accountType.TICKETPURCHASER, + events: [{ name: 'Biology' }], + + // ... other required properties + }; + beforeEach(async () => { const mockCreateUserProvider: Partial = { createUser: (createUserDto: CreateUserDto) => @@ -31,6 +58,11 @@ describe('UsersService', () => { }), }; + const mockFindOneUserByEmailProvider: Partial = + { + findOneByEmail: (email: string) => Promise.resolve(mockUser), + }; + const module: TestingModule = await Test.createTestingModule({ providers: [ UsersService, @@ -40,7 +72,10 @@ describe('UsersService', () => { { provide: ChangeUserPasswordProvider, useValue: {} }, { provide: FindUserByResetOtpAndExpiryTimeProvider, useValue: {} }, { provide: StoreOtpAndExpireProvider, useValue: {} }, - { provide: FindOneUserByEmailProvider, useValue: {} }, + { + provide: FindOneUserByEmailProvider, + useValue: mockFindOneUserByEmailProvider, + }, { provide: DataSource, useValue: {} }, { provide: getRepositoryToken(User), useValue: {} }, ], @@ -55,11 +90,11 @@ describe('UsersService', () => { describe('createUser', () => { it('should be defined', () => { - expect(service.create).toBeDefined(); + expect(service.createUser).toBeDefined(); }); it('should call createUser on CreateUserProvider ', async () => { - let user = await service.create({ + const user = await service.createUser({ firstName: 'John', lastName: 'Doe', email: 'john@doe.com', @@ -71,4 +106,16 @@ describe('UsersService', () => { expect(user.firstName).toEqual('John'); }); }); + + describe('findUserByEmail', () => { + it('should be defined', () => { + expect(service.findOneByEmail).toBeDefined(); + }); + + it('should find a user by email', async () => { + const user = await service.findOneByEmail('test@example.com'); + + expect(user.firstName).toEqual(mockUser.firstName); + }); + }); });