public void CanDoAllAvailableActionsInMeaningfulSequence_WhenRequestsAreValid() { int[] allProductsIds = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; CreateProduct_DoesNotThrow_WhenCatalogNumberIsProvided(allProductsIds); Func <Product, bool> productValuesMatchId = product => { return ( product.CatalogNumber != 0 && product.Price == product.CatalogNumber && product.Quantity == product.CatalogNumber && product.Name == $"Name{product.CatalogNumber}" && product.Category == $"Category{product.CatalogNumber}" && product.Vendor == $"Vendor{product.CatalogNumber}"); }; GetProducts_ReturnsResponseContainingSpecifiedObjects_WhenIdsAreProvided(allProductsIds.Take(5).ToArray(), 5, productValuesMatchId); GetProducts_ReturnsResponseContainingAllObjects_WhenIdsAreNotProvided(allProductsIds.Length, productValuesMatchId); UpdateProducts_DoesNotThrow_WhenCatalogNumberIsProvided(allProductsIds.First()); Func <Product, bool> productValuesMatchIdUpdated = product => { return ( product.CatalogNumber != 0 && product.Price == product.CatalogNumber + 10 && product.Quantity == product.CatalogNumber + 10 && product.Name == $"Name{product.CatalogNumber}{product.CatalogNumber}" && product.Category == $"Category{product.CatalogNumber}{product.CatalogNumber}" && product.Vendor == $"Vendor{product.CatalogNumber}{product.CatalogNumber}"); }; GetProducts_ReturnsResponseContainingSpecifiedObjects_WhenIdsAreProvided(allProductsIds.Take(1).ToArray(), 1, productValuesMatchIdUpdated); DeleteProduct_DoesNotThrow_WhenCatalogNumberIsProvided(allProductsIds.First()); GetProducts_ReturnsResponseContainingAllObjects_WhenIdsAreNotProvided(allProductsIds.Length - 1, productValuesMatchId); var productsIdsLeft = allProductsIds.TakeLast(9); var expectedProductsStatistics = new ProductsStatistics { NumberOfAllProducts = productsIdsLeft.Aggregate((x, y) => x + y), NumberOfDifferentProducts = 9, AverageProductPrice = productsIdsLeft.Average() }; GetProductsStatistics_ReturnsResponseContainingValidStatistics(expectedProductsStatistics); }
public void GetProductsStatistics_ReturnsResponseContainingValidStatistics(ProductsStatistics expectedProductsStatistics) { //Arrange var client = CreateClient(); var getProductsStatistic = new GetProductsStatistics(); //Act var getProductsStatisticsResponse = client.Get(getProductsStatistic); //Assert var productsStatistics = getProductsStatisticsResponse.ProductsStatistics; Assert.AreEqual(expectedProductsStatistics.NumberOfAllProducts, productsStatistics.NumberOfAllProducts); }