public void Offer_Every_Fourth_Milk_Free() { var milkOffer = new MilkOffer(); var products = Enumerable.Repeat(ProductMocks.Milk, 4); Func <IEnumerable <Product>, decimal> discountCalculator = milkOffer.GetDiscountCalculator(); var discount = discountCalculator(products); Assert.AreEqual(1.15m, discount); }
public void Basket_4Milk_Total_3Pounds45() { var basket = new Basket(); var products = Enumerable.Repeat(ProductMocks.Milk, 4); basket.AddProducts(products); var milkOffer = new MilkOffer(); decimal total = basket .WithOffers(milkOffer) .GetTotal(); Assert.AreEqual(3.45m, total); }
public void Basket_Duplicate_Offers_DoNot_Cumulate() { var basket = new Basket(); var products = Enumerable.Repeat(ProductMocks.Milk, 8).ToList(); products.AddRange(new List <Product> { ProductMocks.Bread, ProductMocks.Butter, ProductMocks.Butter }); Enumerable.Repeat(ProductMocks.Milk, 8); basket.AddProducts(products); var butterOffer = new ButterOffer(); var milkOffer = new MilkOffer(); decimal total = basket .WithOffers(butterOffer, milkOffer, milkOffer, butterOffer) .GetTotal(); Assert.AreEqual(9, total); }