Advertisement
nikolayneykov

Untitled

Oct 12th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { UsersService } from './users.service';
  2. import { UsersController } from './users.controller';
  3. import { Test, TestingModule } from '@nestjs/testing';
  4. import { PassportModule } from '@nestjs/passport';
  5.  
  6. describe('UsersController', () => {
  7.   let controller: UsersController;
  8.   let usersService: any;
  9.  
  10.   beforeEach(async () => {
  11.     usersService = {
  12.       getAllUsers() {/* empty */ },
  13.       getUserById() { /* empty */ },
  14.     };
  15.  
  16.     const module: TestingModule = await Test.createTestingModule({
  17.       controllers: [UsersController],
  18.       providers: [
  19.         {
  20.           provide: UsersService,
  21.           useValue: usersService,
  22.         },
  23.       ],
  24.       imports: [
  25.         PassportModule.register({ defaultStrategy: 'jwt' }),
  26.       ],
  27.     }).compile();
  28.  
  29.     controller = module.get<UsersController>(UsersController);
  30.   });
  31.  
  32.   it('should be defined', () => {
  33.     expect(controller).toBeDefined();
  34.   });
  35.  
  36.   describe('getAllUsers()', () => {
  37.     it('should call usersService.getAllUsers()', async () => {
  38.       const spy = jest.spyOn(usersService, 'getAllUsers');
  39.  
  40.       await controller.getAllUsers({});
  41.  
  42.       expect(usersService.getAllUsers).toHaveBeenCalledTimes(1);
  43.  
  44.       spy.mockClear();
  45.     });
  46.  
  47.     it('should return the result from usersService.getAllUsers()', async () => {
  48.       const fakeUsers = [{ username: 'test1' }, { username: 'test2' }];
  49.       const expectedResult = [{ username: 'test1' }, { username: 'test2' }];
  50.  
  51.       const spy = jest
  52.         .spyOn(usersService, 'getAllUsers')
  53.         .mockReturnValue(Promise.resolve(fakeUsers));
  54.  
  55.       const result = await controller.getAllUsers({});
  56.  
  57.       expect(result).toEqual(expectedResult);
  58.  
  59.       spy.mockClear();
  60.     });
  61.   });
  62.  
  63.   describe('getUserById()', () => {
  64.     it('should call usersService.getUserById()', async () => {
  65.       const fakeId = 1;
  66.  
  67.       const spy = jest.spyOn(usersService, 'getUserById');
  68.  
  69.       await controller.getUserById(fakeId);
  70.  
  71.       expect(usersService.getUserById).toHaveBeenCalledTimes(1);
  72.  
  73.       spy.mockClear();
  74.     });
  75.  
  76.     it('should return the result from usersService.getUserById()', async () => {
  77.       const fakeId = 1;
  78.       const fakeUser = { id: 1, username: 'test' };
  79.       const expectedResult = { id: 1, username: 'test' };
  80.  
  81.       const spy = jest
  82.         .spyOn(usersService, 'getUserById')
  83.         .mockReturnValue(Promise.resolve(fakeUser));
  84.  
  85.       const result = await controller.getUserById(fakeId);
  86.  
  87.       expect(result).toEqual(expectedResult);
  88.  
  89.       spy.mockClear();
  90.     });
  91.   });
  92.  
  93. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement