public void GivenProductsAddedWhenCalculatingTotalWithOffersThenOfferAppliedToTotal() { var weightProduct = new WeightProduct { Name = "Gala Apple", Price = 10 }; var quantityProduct = new QuantityProduct { Name = "Lucky Stars 500g", Price = 399 }; var quantityProduct2 = new WeightProduct { Name = "Chocolate", Price = 50 }; var offer1 = Substitute.For <IOffer>(); offer1.ApplyOffer(quantityProduct, 2).Returns(399); var offer2 = Substitute.For <IOffer>(); offer2.ApplyOffer(weightProduct, 9).Returns(67.5m); var currentOffers = new Dictionary <string, IOffer> { { quantityProduct.Name, offer1 }, { weightProduct.Name, offer2 } }; _cashRegister.AddProduct(weightProduct, 9); _cashRegister.AddProduct(quantityProduct, 2); _cashRegister.AddProduct(quantityProduct2, 5); var total = _cashRegister.CalculateTotal(null, currentOffers); Assert.That(total, Is.EqualTo(716.5m)); }
public void GivenProductNotAddedWhenAddingQuantityProductThenProductShouldBeAdded() { var product = new QuantityProduct { Name = "Lucky Stars 500g" }; _cashRegister.AddProduct(product, 2); Assert.That(_cashRegister.Products[product.Name].Quantity, Is.EqualTo(2)); }
public void When75PercentOffApplyOfferCalledThenTotalPriceReduced() { var product = new QuantityProduct { Price = 399 }; var offer = new Seventy5PercentOff(); var totalPrice = offer.ApplyOffer(product, 1); Assert.That(totalPrice, Is.EqualTo(99.75m)); }
public void GivenProductQuantitiesWhenBogogApplyOfferCalledThenTotalPriceReduced(int quantity, int expectedPrice) { var product = new QuantityProduct { Price = 10 }; var bogof = new BuyOneGetOneFreeOffer(); var totalPrice = bogof.ApplyOffer(product, quantity); Assert.That(totalPrice, Is.EqualTo(expectedPrice)); }
public void GivenProductsAddedWhenCalculatingTotalThenTotalReturned() { var weightProduct = new WeightProduct { Name = "Gala Apple", Price = 49 }; var quantityProduct = new QuantityProduct { Name = "Lucky Stars 500g", Price = 399 }; _cashRegister.AddProduct(weightProduct, 100); _cashRegister.AddProduct(quantityProduct, 2); var total = _cashRegister.CalculateTotal(null, null); Assert.That(total, Is.EqualTo(5698)); }
public void GivenProductsAddedWhenCalculatingTotalWithCouponThenDiscountAppliedToTotal() { var weightProduct = new WeightProduct { Name = "Gala Apple", Price = 10 }; var quantityProduct = new QuantityProduct { Name = "Lucky Stars 500g", Price = 3 }; _cashRegister.AddProduct(weightProduct, 9); _cashRegister.AddProduct(quantityProduct, 3); var coupon = Substitute.For <ICoupon>(); coupon.ApplyDiscount(99).Returns(50); var total = _cashRegister.CalculateTotal(coupon, null); Assert.That(total, Is.EqualTo(50)); }