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)); }
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(); }