public void ShouldReturnDiscountAmountBasedOnItemsAdded()
        {
            Cart cart = new Cart(GetTestInventory());

            cart.AddItem('A', 5);
            SameSKUFixedPriceRule testObj = new SameSKUFixedPriceRule('A', 3, 130, GetTestInventory());

            Assert.AreEqual(20.00d, testObj.CalculateDiscountAmount(cart));
        }
        public void ShouldReturnFalseIfACartWithThreeSKUSOFTypePassedIsInCart()
        {
            Cart cart = new Cart(GetTestInventory());

            cart.AddItem('B', '5');
            SameSKUFixedPriceRule testObj = new SameSKUFixedPriceRule('A', 3, 130, GetTestInventory());

            Assert.IsFalse(testObj.isApplicableOnCart(cart));
        }
Exemplo n.º 3
0
        public void ShouldApplyDiscountBasedOnWhichOffersBestValue()
        {
            var Rule1  = new SameSKUFixedPriceRule('A', 3, 130, GetTestInventory());
            var Rule2  = new CombinationDiscountRule('C', 'D', 40.00d, GetTestInventory());
            var engine = new DiscountEngine.DiscountEngine(new List <IDiscountRule>()
            {
                Rule1, Rule2
            });
            var cart = new Cart(GetTestInventory());

            cart.AddItem('A', 10);
            cart.AddItem('C', 1);

            Assert.AreEqual(60.00d, engine.ApplyBestDiscount(cart));
        }
Exemplo n.º 4
0
        public void ShouldApplyDiscountForAllApplicableRules()
        {
            var Rule1  = new SameSKUFixedPriceRule('A', 3, 130, GetTestInventory());
            var Rule2  = new CombinationDiscountRule('C', 'D', 40.00d, GetTestInventory());
            var engine = new DiscountEngine.DiscountEngine(new List <IDiscountRule>()
            {
                Rule1, Rule2
            });
            var cart = new Cart(GetTestInventory());

            cart.AddItem('A', 5);
            cart.AddItem('C', 5);
            cart.AddItem('D', 5);

            Assert.AreEqual(145.00d, engine.ApplyAllDiscounts(cart));
        }