public void ThrowExceptionWhenOrderByPropertyFoundInMappingDictonaryButNull(string propertyName, string orderBy)
        {
            var propertyMapping = new ProductPropertyMapping();

            propertyMapping.MappingDictionary[propertyName] = null;
            _mockPropertyMapping.Setup(x => x.MappingDictionary).Returns(propertyMapping.MappingDictionary);

            var items = CreateItems <Product>(5);

            _mockProducts.Setup(x => x.GetEnumerator()).Returns(items);

            Assert.Throws <ArgumentNullException>(() => _mockProducts.Object.ApplySort(orderBy, _mockPropertyMapping.Object));
        }
예제 #2
0
        public async Task <IActionResult> GetPaged(QueryViewModel parameters)
        {
            var propertyMapping = new ProductPropertyMapping();
            PaginatedList <Product> pagedList;

            if (string.IsNullOrEmpty(parameters.SearchTerm))
            {
                pagedList = await _productRepository.GetPaginatedAsync(parameters, propertyMapping);
            }
            else
            {
                pagedList = await _productRepository.GetPaginatedAsync(parameters, propertyMapping,
                                                                       x => x.Name.Contains(parameters.SearchTerm) || x.FullName.Contains(parameters.SearchTerm));
            }
            var productVms = Mapper.Map <IEnumerable <ProductViewModel> >(pagedList);

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(pagedList.PaginationBase, new JsonSerializerSettings
            {
                ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
            }));

            var links                    = CreateLinksForProducts(parameters, pagedList.HasPrevious, pagedList.HasNext);
            var dynamicProducts          = productVms.ToDynamicIEnumerable(parameters.Fields);
            var dynamicProductsWithLinks = dynamicProducts.Select(product =>
            {
                var productDictionary = product as IDictionary <string, object>;
                var productLinks      = CreateLinksForProduct((int)productDictionary["Id"], parameters.Fields);
                productDictionary.Add("links", productLinks);
                return(productDictionary);
            });
            var resultWithLinks = new
            {
                Links = links,
                Value = dynamicProductsWithLinks
            };

            return(Ok(resultWithLinks));
        }
 public ProductPropertyMappingShould()
 {
     _sut = new ProductPropertyMapping();
 }