예제 #1
0
        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);
        }
예제 #2
0
        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);
        }