Advertisement
nikolayneykov

Untitled

Oct 13th, 2019
252
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.       createUser() { /* empty */ },
  15.       updateUser() { /* empty */ },
  16.       deleteUser() { /* empty */ },
  17.       assignRole() { /* empty */ },
  18.       updateUserAvatar() { /* empty */ },
  19.       updateUserBanStatus() { /* empty */ },
  20.     };
  21.  
  22.     const module: TestingModule = await Test.createTestingModule({
  23.       controllers: [UsersController],
  24.       providers: [
  25.         {
  26.           provide: UsersService,
  27.           useValue: usersService,
  28.         },
  29.       ],
  30.       imports: [
  31.         PassportModule.register({ defaultStrategy: 'jwt' }),
  32.       ],
  33.     }).compile();
  34.  
  35.     controller = module.get<UsersController>(UsersController);
  36.   });
  37.  
  38.   it('should be defined', () => {
  39.     expect(controller).toBeDefined();
  40.   });
  41.  
  42.   describe('getAllUsers()', () => {
  43.     it('should call usersService.getAllUsers()', async () => {
  44.       const spy = jest.spyOn(usersService, 'getAllUsers');
  45.  
  46.       await controller.getAllUsers({});
  47.  
  48.       expect(usersService.getAllUsers).toHaveBeenCalledTimes(1);
  49.  
  50.       spy.mockClear();
  51.     });
  52.  
  53.     it('should return the result from usersService.getAllUsers()', async () => {
  54.       const fakeUsers = [{ username: 'test1' }, { username: 'test2' }];
  55.       const expectedResult = [{ username: 'test1' }, { username: 'test2' }];
  56.  
  57.       const spy = jest
  58.         .spyOn(usersService, 'getAllUsers')
  59.         .mockReturnValue(Promise.resolve(fakeUsers));
  60.  
  61.       const result = await controller.getAllUsers({});
  62.  
  63.       expect(result).toEqual(expectedResult);
  64.  
  65.       spy.mockClear();
  66.     });
  67.   });
  68.  
  69.   describe('getUserById()', () => {
  70.     it('should call usersService.getUserById()', async () => {
  71.       const fakeId = 1;
  72.  
  73.       const spy = jest.spyOn(usersService, 'getUserById');
  74.  
  75.       await controller.getUserById(fakeId);
  76.  
  77.       expect(usersService.getUserById).toHaveBeenCalledTimes(1);
  78.  
  79.       spy.mockClear();
  80.     });
  81.  
  82.     it('should return the result from usersService.getUserById()', async () => {
  83.       const fakeId = 1;
  84.       const fakeUser = { id: 1, username: 'test' };
  85.       const expectedResult = { id: 1, username: 'test' };
  86.  
  87.       const spy = jest
  88.         .spyOn(usersService, 'getUserById')
  89.         .mockReturnValue(Promise.resolve(fakeUser));
  90.  
  91.       const result = await controller.getUserById(fakeId);
  92.  
  93.       expect(result).toEqual(expectedResult);
  94.  
  95.       spy.mockClear();
  96.     });
  97.   });
  98.  
  99.   describe('createUser()', () => {
  100.     it('should call usersService.createUser()', async () => {
  101.       const fakeCreateUser = { username: 'test', password: 'test' };
  102.       const spy = jest.spyOn(usersService, 'createUser');
  103.  
  104.       await controller.createUser(fakeCreateUser);
  105.  
  106.       expect(usersService.createUser).toHaveBeenCalledTimes(1);
  107.  
  108.       spy.mockClear();
  109.     });
  110.  
  111.     it('should return the result from usersService.createUser()', async () => {
  112.       const fakeCreateUser = { username: 'test', password: 'test' };
  113.       const expectedResult = { username: 'test' };
  114.  
  115.       const spy = jest
  116.         .spyOn(usersService, 'createUser')
  117.         .mockReturnValue(Promise.resolve({ username: 'test' }));
  118.  
  119.       const result = await controller.createUser(fakeCreateUser);
  120.  
  121.       expect(result).toEqual(expectedResult);
  122.  
  123.       spy.mockClear();
  124.     });
  125.   });
  126.  
  127.   describe('updateUser()', () => {
  128.     it('should call usersService.updateUser()', async () => {
  129.       const fakeUserId = 1;
  130.       const fakeSesssionUser = { username: 'test' };
  131.       const fakeUpdateUser = { username: 'test', password: 'test', newPassword: 'test123' };
  132.       const spy = jest.spyOn(usersService, 'updateUser');
  133.  
  134.       await controller.updateUser(fakeUserId, fakeUpdateUser, fakeSesssionUser as any);
  135.  
  136.       expect(usersService.updateUser).toHaveBeenCalledTimes(1);
  137.  
  138.       spy.mockClear();
  139.     });
  140.  
  141.     it('should return the result from usersService.updateUser()', async () => {
  142.       const fakeUserId = 1;
  143.       const fakeSesssionUser = { username: 'test' };
  144.       const fakeUpdateUser = { username: 'test', password: 'test', newPassword: 'test123' };
  145.  
  146.       const expectedResult = { username: 'test' };
  147.  
  148.       const spy = jest
  149.         .spyOn(usersService, 'updateUser')
  150.         .mockReturnValue(Promise.resolve({ username: 'test' }));
  151.  
  152.       const result = await controller.updateUser(fakeUserId, fakeUpdateUser, fakeSesssionUser as any);
  153.  
  154.       expect(result).toEqual(expectedResult);
  155.  
  156.       spy.mockClear();
  157.     });
  158.   });
  159.  
  160.   describe('deleteUser()', () => {
  161.     it('should call usersService.deleteUser()', async () => {
  162.       const fakeUserId = 1;
  163.       const fakeSesssionUser = { username: 'test' };
  164.       const fakeDeleteUser = { username: 'test', password: 'test' };
  165.       const spy = jest.spyOn(usersService, 'deleteUser');
  166.  
  167.       await controller.deleteUser(fakeUserId, fakeDeleteUser, fakeSesssionUser as any);
  168.  
  169.       expect(usersService.deleteUser).toHaveBeenCalledTimes(1);
  170.  
  171.       spy.mockClear();
  172.     });
  173.  
  174.     it('should return the result from usersService.deleteUser()', async () => {
  175.       const fakeUserId = 1;
  176.       const fakeSesssionUser = { username: 'test' };
  177.       const fakeDeleteUser = { username: 'test', password: 'test' };
  178.  
  179.       const expectedResult = { username: 'test' };
  180.  
  181.       const spy = jest
  182.         .spyOn(usersService, 'deleteUser')
  183.         .mockReturnValue(Promise.resolve({ username: 'test' }));
  184.  
  185.       const result = await controller.deleteUser(fakeUserId, fakeDeleteUser, fakeSesssionUser as any);
  186.  
  187.       expect(result).toEqual(expectedResult);
  188.  
  189.       spy.mockClear();
  190.     });
  191.   });
  192.  
  193.   describe('assignRole()', () => {
  194.     it('should call usersService.assignRole()', async () => {
  195.       const fakeUserId = 1;
  196.       const fakeRole = { name: 'Librarian' };
  197.       const spy = jest.spyOn(usersService, 'assignRole');
  198.  
  199.       await controller.assignRole(fakeUserId, fakeRole as any);
  200.  
  201.       expect(usersService.assignRole).toHaveBeenCalledTimes(1);
  202.  
  203.       spy.mockClear();
  204.     });
  205.  
  206.     it('should return the result from usersService.assignRole()', async () => {
  207.       const fakeUserId = 1;
  208.       const fakeRole = { name: 'Librarian' };
  209.  
  210.       const expectedResult = { name: 'Librarian' };
  211.  
  212.       const spy = jest
  213.         .spyOn(usersService, 'assignRole')
  214.         .mockReturnValue(Promise.resolve({ name: 'Librarian' }));
  215.  
  216.       const result = await controller.assignRole(fakeUserId, fakeRole as any);
  217.  
  218.       expect(result).toEqual(expectedResult);
  219.  
  220.       spy.mockClear();
  221.     });
  222.   });
  223.  
  224.   describe('updateUserAvatar()', () => {
  225.     it('should call usersService.updateUserAvatar()', async () => {
  226.       const fakeUserId = 1;
  227.       const fakeAvatar = 'some file...';
  228.       const fakeSessionUser = { username: 'test' };
  229.  
  230.       const spy = jest.spyOn(usersService, 'updateUserAvatar');
  231.  
  232.       await controller.updateUserAvatar(fakeUserId, fakeAvatar, fakeSessionUser as any);
  233.  
  234.       expect(usersService.updateUserAvatar).toHaveBeenCalledTimes(1);
  235.  
  236.       spy.mockClear();
  237.     });
  238.  
  239.     it('should return the result from usersService.updateUserAvatar()', async () => {
  240.       const fakeUserId = 1;
  241.       const fakeAvatar = 'some file...';
  242.       const fakeSessionUser = { username: 'test' };
  243.  
  244.       const expectedResult = { username: 'test', avatar: 'some avatar url...' };
  245.  
  246.       const spy = jest
  247.         .spyOn(usersService, 'updateUserAvatar')
  248.         .mockReturnValue(Promise.resolve({ username: 'test', avatar: 'some avatar url...' }));
  249.  
  250.       const result = await controller.updateUserAvatar(fakeUserId, fakeAvatar, fakeSessionUser as any);
  251.  
  252.       expect(result).toEqual(expectedResult);
  253.  
  254.       spy.mockClear();
  255.     });
  256.   });
  257.  
  258.   describe('updateUserBanStatus()', () => {
  259.     it('should call usersService.updateUserBanStatus()', async () => {
  260.       const fakeUserId = 1;
  261.       const fakeBanStatus = { isBanned: true };
  262.       const spy = jest.spyOn(usersService, 'updateUserBanStatus');
  263.  
  264.       await controller.updateUserBanStatus(fakeUserId, fakeBanStatus);
  265.  
  266.       expect(usersService.updateUserBanStatus).toHaveBeenCalledTimes(1);
  267.  
  268.       spy.mockClear();
  269.     });
  270.  
  271.     it('should return the result from usersService.updateUserBanStatus()', async () => {
  272.       const fakeUserId = 1;
  273.       const fakeBanStatus = { isBanned: true };
  274.  
  275.       const expectedResult = { isBanned: true };
  276.  
  277.       const spy = jest
  278.         .spyOn(usersService, 'updateUserBanStatus')
  279.         .mockReturnValue(Promise.resolve({ isBanned: true }));
  280.  
  281.       const result = await controller.updateUserBanStatus(fakeUserId, fakeBanStatus);
  282.  
  283.       expect(result).toEqual(expectedResult);
  284.  
  285.       spy.mockClear();
  286.     });
  287.   });
  288.  
  289. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement