public void GetAllArticles_WithoutFilters_Success() { var filter = new ArticleFilter(); var pagination = new ArticlePaginationFilter() { PageNumber = 1, PageSize = 5 }; var filterQuery = _mapper.Map <ArticleQuery>(filter); var articles = GetTestArticles().AsQueryable().OrderByDescending(x => x.Created); var filteredArticles = articles.Select(x => _mapper.Map <ArticleDto>(x)).ToList(); _articleRepositoryMock.Setup(x => x.GetAllQueryable()).Returns(articles); _articleFilterServiceMock.Setup(x => x.AddAllFiltersQuery(filterQuery, articles)) .Returns(articles); var actual = _service.GetAllArticles(filter, pagination); var expectedSer = JsonConvert.SerializeObject(filteredArticles); var actualSer = JsonConvert.SerializeObject(actual.Data); //Assert.AreEqual(1, actual.TotalPages); Assert.AreEqual(pagination.PageSize, actual.PageSize); Assert.AreEqual(pagination.PageNumber, actual.PageNumber); //Assert.AreEqual(expectedSer, actualSer); }
public ActionResult <Pagination <IEnumerable <ArticleDto> > > GetAllArticles([FromQuery] ArticleFilter articleFilters = null, [FromQuery] ArticlePaginationFilter pagination = null) { try { var articles = _articleService.GetAllArticles(articleFilters, pagination); return(Ok(articles)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public Pagination <ArticleDto> GetAllArticles(ArticleFilter filters = null, ArticlePaginationFilter pagination = null) { var filterQuery = _mapper.Map <ArticleQuery>(filters); var paginationQuery = _mapper.Map <ArticlePaginationQuery>(pagination); var skip = (paginationQuery.PageNumber - 1) * paginationQuery.PageSize; var articles = GetArticlesWithIncludes().OrderByDescending(x => x.Created); var filteredArticles = _articleFilterService.AddAllFiltersQuery(filterQuery, articles).ToList(); var articlesResult = filteredArticles.Select(x => _mapper.Map <ArticleDto>(x)).Skip(skip).Take(paginationQuery.PageSize); var paginationResponse = PaginationHelper.CreatePaginatedResponse(_uriService, paginationQuery, articlesResult.ToList(), filteredArticles.ToList(), "/Article", filterQuery); return(paginationResponse); }