Esempio n. 1
0
        static void Main(string[] args)
        {
            var shoppingRepository = new ShoppingRepository();
            var shoppingOperation  = new ShoppingOperation(shoppingRepository);

            Console.WriteLine("Welcome to Retail Shop... Happy Shopping");
            var availableProducts = shoppingOperation.AddProducts();

            Console.WriteLine("------Product--------Price-------");
            foreach (var product in availableProducts)
            {
                Console.WriteLine($"        {product.Name}           {product.Price}");
            }

            Console.WriteLine("Please Enter Cart Items");
            var inputItems = Console.ReadLine();
            var cartItems  = shoppingOperation.ProcessCartItems(inputItems);

            var productDetails = shoppingOperation.GetProductDetails(cartItems, availableProducts);

            var total = shoppingOperation.GetTotalBill(productDetails);

            Console.WriteLine("-------Qunatity * Product------ Price----");
            foreach (var item in productDetails)
            {
                Console.WriteLine($"-------{item.Quantity} * {item.Product} ----- {item.Price}-----");
            }

            Console.WriteLine($"-------Total --------------{total}-------");
            Console.ReadLine();
        }
Esempio n. 2
0
        public void Test_ShoppingOperation_WhenDiscountAIsApplied_DisplayDiscountedPrice()
        {
            var mockShoppingRepository = new Mock <IShoppingRepository>();
            var shoppingOperation      = new ShoppingOperation(mockShoppingRepository.Object);

            var cartItems = new List <Cart>();

            cartItems.Add(new Cart {
                Product = "A", Quantity = 3
            });
            cartItems.Add(new Cart {
                Product = "B", Quantity = 1
            });

            var products = new List <Product>();

            products.Add(new Product {
                Name = "A", Price = 50, DiscountType = "DiscountA"
            });
            products.Add(new Product {
                Name = "B", Price = 30, DiscountType = null
            });

            var productDetails = shoppingOperation.GetProductDetails(cartItems, products);

            Assert.True(productDetails.Count == 2);
            Assert.True(productDetails.First(x => x.Product == "A").Price == 130);
            Assert.True(productDetails.First(x => x.Product == "B").Price == 30);
        }
Esempio n. 3
0
        public void Test_ShoppingOperation_WhenMultipleProductOfSameTypeIsAdded_ProcessCartItems(string input, int count, int out1, int out2, int out3, int out4)
        {
            var mockShoppingRepository = new Mock <IShoppingRepository>();
            var shoppingOperation      = new ShoppingOperation(mockShoppingRepository.Object);


            var cartItems = shoppingOperation.ProcessCartItems(input);

            Assert.True(cartItems.Count == count);
            Assert.True(cartItems.FirstOrDefault(x => x.Product == "A").Quantity == out1);
            Assert.True(cartItems.FirstOrDefault(x => x.Product == "B").Quantity == out2);
            Assert.True(cartItems.FirstOrDefault(x => x.Product == "C").Quantity == out3);
            Assert.True(cartItems.FirstOrDefault(x => x.Product == "D").Quantity == out4);
        }
Esempio n. 4
0
        public void Test_ShoppingOperation_WhenCartIsSelected_GetTotalPrice()
        {
            var mockShoppingRepository = new Mock <IShoppingRepository>();
            var shoppingOperation      = new ShoppingOperation(mockShoppingRepository.Object);



            var productDetails = new List <ProductDetail>();

            productDetails.Add(new ProductDetail {
                Product = "A", Price = 50, Quantity = 2
            });
            productDetails.Add(new ProductDetail {
                Product = "B", Price = 30, Quantity = 1
            });

            var total = shoppingOperation.GetTotalBill(productDetails);

            Assert.True(total == 80);
        }
Esempio n. 5
0
        public void Test_ShoppingOperation_ShowAvailableProducts()
        {
            var            mockShoppingRepository = new Mock <IShoppingRepository>();
            List <Product> mockProducts           = new List <Product>();

            mockProducts.Add(new Product {
                Name = "A", Price = 50, DiscountType = "DiscountA"
            });
            mockProducts.Add(new Product {
                Name = "B", Price = 30, DiscountType = "DiscountB"
            });

            mockShoppingRepository.Setup(x => x.AddProducts()).Returns(mockProducts);

            var shoppingOperation = new ShoppingOperation(mockShoppingRepository.Object);
            var availableProducts = shoppingOperation.AddProducts();

            Assert.True(availableProducts.Count == 2);
            Assert.True(availableProducts[0].Name == "A");
            Assert.True(availableProducts[0].Price == 50);
            Assert.True(availableProducts[0].DiscountType == "DiscountA");
        }