public void Buy2ButtersGet1Bread50Off_ApplyDiscount_ShouldApply_Correctly() { List <IBasketItem> basketItems = null; var rule = new Buy2ButtersGet1Bread50Off(); Assert.AreEqual(0, rule.ApplyDiscount(basketItems)); basketItems = new List <IBasketItem>(); Assert.AreEqual(0, rule.ApplyDiscount(basketItems)); basketItems.Add(new BasketItem(new Product() { Name = "Milk", Price = 1.15 }, 1)); Assert.AreEqual(0, rule.ApplyDiscount(basketItems)); basketItems.Add(new BasketItem(new Product() { Name = "Bread", Price = 1 }, 1)); Assert.AreEqual(0, rule.ApplyDiscount(basketItems)); basketItems.Add(new BasketItem(new Product() { Name = "Butter", Price = 0.8 }, 1)); Assert.AreEqual(0, rule.ApplyDiscount(basketItems)); basketItems[2].Quantity++; Assert.AreEqual(0.5, rule.ApplyDiscount(basketItems)); }
public void Buy2ButtersGet1Bread50Off_IsApplicable_ShouldReturn_Correctly() { List <IBasketItem> basketItems = null; var rule = new Buy2ButtersGet1Bread50Off(); Assert.IsFalse(rule.IsApplicable(basketItems)); basketItems = new List <IBasketItem>(); Assert.IsFalse(rule.IsApplicable(basketItems)); basketItems.Add(new BasketItem(new Product() { Name = "Milk", Price = 1.15 }, 1)); Assert.IsFalse(rule.IsApplicable(basketItems)); basketItems.Add(new BasketItem(new Product() { Name = "Bread", Price = 1 }, 1)); Assert.IsFalse(rule.IsApplicable(basketItems)); basketItems.Add(new BasketItem(new Product() { Name = "Butter", Price = 0.8 }, 1)); Assert.IsFalse(rule.IsApplicable(basketItems)); basketItems[2].Quantity++; Assert.IsTrue(rule.IsApplicable(basketItems)); }