Advertisement
nikolayneykov

Untitled

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