public void ShouldReturnDiscountAmountBasedOnIfMultipleSetsAddedForSameSKU() { Cart cart = new Cart(GetTestInventory()); cart.AddItem('A', 5); CombinationDiscountRule testObj = new CombinationDiscountRule('A', 'A', 25.00d, GetTestInventory()); Assert.AreEqual(150.00d, testObj.CalculateDiscountAmount(cart)); }
public void ShouldReturnDiscountAmountBasedOnItemsAdded() { Cart cart = new Cart(GetTestInventory()); cart.AddItem('A', 5); cart.AddItem('C', 1); CombinationDiscountRule testObj = new CombinationDiscountRule('A', 'C', 40.00d, GetTestInventory()); Assert.AreEqual(25.00d, testObj.CalculateDiscountAmount(cart)); }
public void ShouldReturnFalseIfACartWithThreeSKUSOFTypePassedIsInCart() { Cart cart = new Cart(GetTestInventory()); cart.AddItem('A', '5'); cart.AddItem('D', '1'); CombinationDiscountRule testObj = new CombinationDiscountRule('A', 'C', 40.00d, GetTestInventory()); Assert.IsFalse(testObj.isApplicableOnCart(cart)); }
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)); }
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)); }