//Look for catgory
        public async Task <PaginatedResult <ProductModel> > GetPage(GetProductPageQuery search)
        {
            //var query = _readOnlyRepository.Query<Product>(x => x.Category.CategoryName);
            var query = _readOnlyRepository.Query <Product>();

            if (!string.IsNullOrEmpty(search.Term))
            {
                var term = search.Term.Trim();
                query = query.Where(x => x.ProductName.Contains(term));
            }

            var sortCriteria = search.GetSortCriteria();
            var items        = query
                               .ProjectTo <ProductModel>(_mapper.ConfigurationProvider)
                               .OrderByOrDefault(sortCriteria, x => x.ProductName);
            var page = await _paginator.MakePageAsync(_readOnlyRepository, query, items, search);

            return(page);
        }
Пример #2
0
        public async Task Returns_CorrectPageInfo()
        {
            int pageNumber            = 1;
            int pageSize              = 3;
            GetProductPageQuery query = queryFactory.GetProductPageQuery(pageNumber, pageSize);
            var result = (await new GetProductPageQueryHandler(context, mapper).Handle(query)).PageInfo;

            var expected = new PageInfo()
            {
                CurrentPage  = pageNumber,
                ItemsCount   = context.Products.Count(),
                ItemsPerPage = pageSize
            };

            Assert.AreEqual(expected.CurrentPage, result.CurrentPage);
            Assert.AreEqual(expected.ItemsPerPage, result.ItemsPerPage);
            Assert.AreEqual(expected.ItemsCount, result.ItemsCount);
            Assert.AreEqual(expected.TotalPages, result.TotalPages);
        }
Пример #3
0
        public void Products_Send_CorrectCommand_WithDefaults()
        {
            var mediatorMock          = new Mock <IMediator>();
            GetProductPageQuery query = null;

            mediatorMock.Setup(c => c.Handle <ProductPageVM>(It.IsAny <GetProductPageQuery>()))
            .Callback <IRequest <ProductPageVM> >((pq) => query = pq as GetProductPageQuery)
            .Returns(Task.FromResult(new ProductPageVM()));
            var controller = new ProductController(mediatorMock.Object);

            _ = controller.Products(null);

            const int DefaultPageNumber = 1;

            Assert.That(query.PageNumber, Is.EqualTo(DefaultPageNumber));

            const int DefautPageSize = 3;

            Assert.That(query.PageSize, Is.EqualTo(DefautPageSize));

            Assert.IsNull(query.CurrentCategory);
        }
Пример #4
0
        public async Task <IActionResult> GetCategoriesPage([FromQuery] GetProductPageQuery query)
        {
            var result = await _productService.GetCategoriesPage(query);

            return(Ok(result));
        }