Beispiel #1
0
        public void SortFoodsByPrice_Test()
        {
            // arrange
            Products[] products;
            Products[] price_foods;

            double product_0_expected_price = 0.315425;
            double product_1_expected_price = 0.6376;
            double product_2_expected_price = 0.7659;
            double product_3_expected_price = 0.93065;
            double product_4_expected_price = 1.06313;

            double delta = 0.001;

            // act
            products    = ParseString.GetData(GetManufacturingString());
            price_foods = new Products[products.Length];
            ProductsSort.SortFoodsByPrice(products, ref price_foods);

            // assert
            Assert.AreEqual(product_0_expected_price, price_foods[0].Price, delta);
            Assert.AreEqual(product_1_expected_price, price_foods[1].Price, delta);
            Assert.AreEqual(product_2_expected_price, price_foods[2].Price, delta);
            Assert.AreEqual(product_3_expected_price, price_foods[3].Price, delta);
            Assert.AreEqual(product_4_expected_price, price_foods[4].Price, delta);
        }
Beispiel #2
0
        public void SortFoodsByCalorieContent_Test()
        {
            // arrange
            Products[] products;
            Products[] сalorie_foods;

            double product_0_expected_сalorie = 646.599;
            double product_1_expected_сalorie = 859.13;
            double product_2_expected_сalorie = 1092;
            double product_3_expected_сalorie = 1556.6;
            double product_4_expected_сalorie = 1772.6;

            double delta = 0.001;

            // act
            products      = ParseString.GetData(GetManufacturingString());
            сalorie_foods = new Products[products.Length];
            ProductsSort.SortFoodsByCalorieContent(products, ref сalorie_foods);
            // assert
            Assert.AreEqual(product_0_expected_сalorie, сalorie_foods[0].Calories, delta);
            Assert.AreEqual(product_1_expected_сalorie, сalorie_foods[1].Calories, delta);
            Assert.AreEqual(product_2_expected_сalorie, сalorie_foods[2].Calories, delta);
            Assert.AreEqual(product_3_expected_сalorie, сalorie_foods[3].Calories, delta);
            Assert.AreEqual(product_4_expected_сalorie, сalorie_foods[4].Calories, delta);
        }
Beispiel #3
0
        public async Task OrderByShouldOrderProducts(ProductsSort productsSort, string productName)
        {
            var options = new DbContextOptionsBuilder <PhotoparallelDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          .Options;
            var dbContext = new PhotoparallelDbContext(options);

            var productService = new ProductsService(dbContext);

            dbContext.Products.AddRange(new List <Product>
            {
                new Product {
                    Name = "Bag Vanguard", Price = 180, ProductStatus = ProductStatus.Sale
                },
                new Product {
                    Name = "Rode Videomic", Price = 150, ProductStatus = ProductStatus.Sale
                },
                new Product {
                    Name = "Dji Phantom 4", Price = 3000, ProductStatus = ProductStatus.Sale
                },
                new Product {
                    Name = "Canon M50", Price = 1199, ProductStatus = ProductStatus.Sale
                },
            });
            await dbContext.SaveChangesAsync();

            var products = await productService.GetVisibleProductsAsync();

            var orderedProducts = productService.OrderBy(products, productsSort);

            Assert.Equal(productName, orderedProducts.First().Name);
        }
        public void OrderByShouldOrderProducts(string test, ProductsSort productsSort, string productName)
        {
            var options = new DbContextOptionsBuilder <XeonDbContext>()
                          .UseInMemoryDatabase(databaseName: $"{test}_OrderBy_Product_Database")
                          .Options;

            var dbContext      = new XeonDbContext(options);
            var productService = new ProductsService(dbContext);

            var parentCategory = new ParentCategory {
                Name = "Computers"
            };
            var childCategories = new List <ChildCategory>
            {
                new ChildCategory {
                    Name = "Cables", ParentCategory = parentCategory
                },
                new ChildCategory {
                    Name = "Monitors", ParentCategory = parentCategory
                }
            };

            dbContext.ChildCategories.AddRange(childCategories);
            dbContext.SaveChanges();

            dbContext.Products.AddRange(new List <Product>
            {
                new Product {
                    Name = "USB Cable", Price = 33, ChildCategory = childCategories.First()
                },
                new Product {
                    Name = "Adapter Cable", Price = 28, ChildCategory = childCategories.First()
                },
                new Product {
                    Name = "Keyboard", Price = 45, ChildCategory = childCategories.First()
                },
                new Product {
                    Name = "Computer", Price = 11, ChildCategory = childCategories.First()
                },
                new Product {
                    Name = "Monitor LG", Price = 36, ChildCategory = childCategories.Last()
                },
            });
            dbContext.SaveChanges();

            var products        = productService.GetVisibleProducts();
            var orderedProducts = productService.OrderBy(products, productsSort);

            Assert.Equal(productName, orderedProducts.First().Name);
        }
Beispiel #5
0
        public void FindFoodsBigestThenValueIngredient_Test()
        {
            // arrange
            Products[] products;
            Products[] find_foods_bigest_then_value;
            string     ingredient            = "Сахар";
            double     ingredient_val        = 0.005;
            string     expected_product_name = "Нарезной";

            // act
            products = ParseString.GetData(GetManufacturingString());
            find_foods_bigest_then_value = new Products[products.Length];
            ProductsSort.FindFoodsBigestThenValueIngredient(ingredient, ingredient_val, products, ref find_foods_bigest_then_value);

            // assert
            // Должен определиться Нарезной
            Assert.AreEqual(expected_product_name, find_foods_bigest_then_value[0].ProductName);
        }
Beispiel #6
0
        public IEnumerable <Product> OrderBy(IEnumerable <Product> products, ProductsSort sortBy)
        {
            if (ProductsSort.PriceDescending == sortBy)
            {
                return(products.OrderByDescending(x => x.Price).ToList());
            }
            else if (ProductsSort.PriceAscending == sortBy)
            {
                return(products.OrderBy(x => x.Price).ToList());
            }
            else if (ProductsSort.Oldest == sortBy)
            {
                //Default sorting behavior
                return(products);
            }

            //ProductsSortType.Newest
            return(products.OrderByDescending(x => x.Id).ToList());
        }
Beispiel #7
0
 public IEnumerable <Product> OrderBy(IEnumerable <Product> products, ProductsSort sortBy)
 {
     if (sortBy == ProductsSort.Name)
     {
         return(products.OrderBy(x => x.Name).ToList());
     }
     else if (sortBy == ProductsSort.PriceAscending)
     {
         return(products.OrderBy(x => x.Price).ToList());
     }
     else if (sortBy == ProductsSort.PriceDescending)
     {
         return(products.OrderByDescending(x => x.Price).ToList());
     }
     else
     {
         return(products.OrderByDescending(x => x.Id).ToList());
     }
 }
Beispiel #8
0
        public void FindFoodsByPriceAndByCalorieContent_Test()
        {
            // arrange
            Products[] products;
            Products[] find_foods_by_price_and_by_calorie;

            double expected_сalorie      = 1092;
            double expected_price        = 0.6376;
            string expected_product_name = "Грузинский";
            double delta = 0.001;

            // act
            products = ParseString.GetData(GetManufacturingString());
            find_foods_by_price_and_by_calorie = new Products[products.Length];
            ProductsSort.FindFoodsByPriceAndByCalorieContent(expected_сalorie, expected_price, products, ref find_foods_by_price_and_by_calorie);

            // assert
            Assert.AreEqual(expected_сalorie, find_foods_by_price_and_by_calorie[0].Calories, delta);
            Assert.AreEqual(expected_price, find_foods_by_price_and_by_calorie[0].Price, delta);
            // Должен определиться Грузинский
            Assert.AreEqual(expected_product_name, find_foods_by_price_and_by_calorie[0].ProductName);
        }
Beispiel #9
0
        public void FindFoodsNumberIngredientsGreaterThanTheValue_Test()
        {
            // arrange
            Products[] products;
            Products[] find_foods_number_ingredients_greater_than_the_value;
            int        count             = 0;
            int        expected_quantity = 4;

            // act
            products = ParseString.GetData(GetManufacturingString());
            find_foods_number_ingredients_greater_than_the_value = new Products[products.Length];
            ProductsSort.FindFoodsNumberIngredientsGreaterThanTheValue(3, products, find_foods_number_ingredients_greater_than_the_value);
            foreach (var item in find_foods_number_ingredients_greater_than_the_value)
            {
                if (item != null)
                {
                    count++;
                }
            }

            // assert
            Assert.AreEqual(expected_quantity, count);
        }
Beispiel #10
0
        public IQueryable <ProductServiceModel> SortProducts(IQueryable <ProductServiceModel> products, ProductsSort sort)
        {
            if (sort == ProductsSort.PriceDescending)
            {
                return(products.OrderByDescending(p => p.Price));
            }

            return(products.OrderBy(p => p.Price));
        }