public async Task <ActionResult <IEnumerable <BookDTO> > > GetBooks([FromQuery] BookSpecificationParams bookParams) { var spec = new BooksWithCategoriesAndAuthorsSpecification(bookParams); // get any overall count of items (after filtering has been applied) var countSpec = new BooksWithFiltersForCountSpecification(bookParams); var totalItems = await _bookRepository.CountAsync(countSpec); // add pagination response headers to help client applications _httpContextAccessor.HttpContext.AddPaginationResponseHeaders(totalItems, bookParams.PageSize, bookParams.PageIndex); var books = await _bookRepository.ListAsync(spec); return(Ok(_mapper.Map <IEnumerable <Book>, IEnumerable <BookDTO> >(books))); }
public async Task GetBooks_ReturnsOkResult() { // Arrange var context = new DefaultHttpContext(); _httpContextAccessorMock.Setup(_ => _.HttpContext).Returns(context); var controller = new BooksController(_bookRepositoryMock.Object, _mapperMock.Object, _httpContextAccessorMock.Object); var bookParams = new BookSpecificationParams() { PageIndex = 1, PageSize = 5 }; // Act var response = await controller.GetBooks(bookParams); // Assert Assert.IsType <OkObjectResult>(response.Result); }