public async Task WhenOrderByWasNotQueriedThenMapToDefaultSortOptionInSpecification()
        {
            var inputQuery = new GetProductsBySpecificationQuery();
            ProductsQuerySpecification specificationOnRepositoryInput = null;

            _productRepository.Setup(r => r.GetProductsBySpecification(It.IsAny <ProductsQuerySpecification>()))
            .ReturnsAsync(CreateProductList())
            .Callback <ProductsQuerySpecification>(s => specificationOnRepositoryInput = s);

            await _getProductsBySpecificationQueryHandler
            .Handle(inputQuery, default);

            specificationOnRepositoryInput.SortOption.Should().Be(SortOption.Default);
        }
        public async Task WhenPaginationWasNotQueriedThenQueryProductsWithMaxPageSize()
        {
            var inputQuery = new GetProductsBySpecificationQuery();
            ProductsQuerySpecification specificationOnRepositoryInput = null;

            _productRepository.Setup(r => r.GetProductsBySpecification(It.IsAny <ProductsQuerySpecification>()))
            .Callback <ProductsQuerySpecification>(s => specificationOnRepositoryInput = s)
            .ReturnsAsync(CreateProductList());
            _productRepository.Setup(r => r.CountProductsBySpecification(It.IsAny <ProductsQuerySpecification>()))
            .ReturnsAsync(_maxPageSize);

            var result = await _getProductsBySpecificationQueryHandler
                         .Handle(inputQuery, default);

            specificationOnRepositoryInput.PageIndexQueried.Should().BeTrue();
            specificationOnRepositoryInput.PageIndex.Should().Be(0);
            specificationOnRepositoryInput.PageSize.Should().Be(_maxPageSize);
        }
Пример #3
0
        public async Task <IActionResult> GetProductsBySpecification(
            [FromQuery(Name = "categoryName")] string categoryName,
            [FromQuery(Name = "searchPhrase")] string searchPhrase,
            [FromQuery(Name = "orderBy")] string orderBy,
            [FromQuery(Name = "pageIndex")] int?pageIndex,
            [FromQuery(Name = "pageSize")] int?pageSize)
        {
            var query = new GetProductsBySpecificationQuery
            {
                CategoryNameQueried = categoryName != null,
                CategoryName        = categoryName,
                SearchPhraseQueried = searchPhrase != null,
                SearchPhrase        = searchPhrase,
                OrderByQueried      = orderBy != null,
                OrderBy             = orderBy,
                PageIndexQueried    = pageIndex.HasValue,
                PageIndex           = pageIndex ?? 0,
                PageSizeQueried     = pageSize.HasValue,
                PageSize            = pageSize ?? 0,
            };
            var result = await _mediator.Send(query);

            return(Ok(_mapper.MapToGetProductsBySpecificationResponse(result)));
        }