public void TestInitialize()
        {
            _items = new Items();
            _quantityBasedDiscountItem = new QuantityBasedDiscountItem();

            _quantityBasedDiscount = new QuantityBasedDiscount(_quantityBasedDiscountItem, _items);
        }
Пример #2
0
        private static void applyAllDiscounts(OrderBase order)
        {
            Discount quantiyDisount1 = new QuantityBasedDiscount("Buy 3A for 130", 3, 130, "A");
            Discount quantiyDisount2 = new QuantityBasedDiscount("Buy 2B for 45", 2, 45, "B");

            order.AddDiscount(quantiyDisount1);
            order.AddDiscount(quantiyDisount2);

            Discount combinedDisount = new CombinedProductsDiscount("BUY C AND D FOR 30 ONLY", 30);

            combinedDisount.AddApplicableProducts("C");
            combinedDisount.AddApplicableProducts("D");
            order.AddDiscount(combinedDisount);
        }
        public void HandleDiscountForItemB()
        {
            QuantityBasedDiscount quantityBasedDiscount = new QuantityBasedDiscount();

            Cart cart = new Cart();

            cart.Items = new List <CartItem>();
            cart.Items.Add(new CartItem()
            {
                Quantity    = 2,
                ProductInfo = new ProductInfo("B", 30)
            });

            quantityBasedDiscount.HandleDiscount(cart);
            Assert.AreEqual(45, cart.TotalPrice);
        }
        public void HandleDiscountForFiveItemA()
        {
            QuantityBasedDiscount quantityBasedDiscount = new QuantityBasedDiscount();

            Cart cart = new Cart();

            cart.Items = new List <CartItem>();
            cart.Items.Add(new CartItem()
            {
                Quantity    = 5,
                ProductInfo = new ProductInfo("A", 50)
            });

            quantityBasedDiscount.HandleDiscount(cart);
            Assert.AreEqual(230, cart.TotalPrice);
        }
        public void HandleDiscountForNegativeFiveItemA()
        {
            QuantityBasedDiscount quantityBasedDiscount = new QuantityBasedDiscount();

            Cart cart = new Cart();

            cart.Items = new List <CartItem>();
            cart.Items.Add(new CartItem()
            {
                Quantity    = -5,
                ProductInfo = new ProductInfo("A", 50)
            });

            quantityBasedDiscount.HandleDiscount(cart);

            // handle negative price before applying promotion
            Assert.AreEqual(-250, cart.TotalPrice);
        }
        public void QuantityBasedDiscount_SetNextRule_ShouldNotFailForNull()
        {
            QuantityBasedDiscount quantityBasedDiscount = new QuantityBasedDiscount();

            quantityBasedDiscount.SetNextRule(null);
        }
        public void QuantityBasedDiscount_ShouldNotFailForEmptyCart()
        {
            QuantityBasedDiscount quantityBasedDiscount = new QuantityBasedDiscount();

            quantityBasedDiscount.HandleDiscount(new Cart());
        }
        public void QuantityBasedDiscount_ShouldNotFailForNull()
        {
            QuantityBasedDiscount quantityBasedDiscount = new QuantityBasedDiscount();

            quantityBasedDiscount.HandleDiscount(null);
        }