public void Verify_DoublePricingRule_Discount() { var adFactory = new AdFactory(); var pricingRule1 = new DiscountPricingRule(typeof(StandoutAd), 22.99m); var pricingRule2 = new DiscountPricingRule(typeof(ClassicAd), 69.99m); var pricingRules = new List <IPricingRule>(); pricingRules.Add(pricingRule1); pricingRules.Add(pricingRule2); var checkout = new Domain.Checkout(pricingRules); var item1 = adFactory.CreateAd(typeof(StandoutAd)); var item2 = adFactory.CreateAd(typeof(ClassicAd)); checkout.Add(item1); checkout.Add(item2); var total = checkout.Total(); Assert.Equal(500, total); }
public void Verify_MixedPricingRules_Deal_and_Discount() { var adFactory = new AdFactory(); var pricingRule1 = new DiscountPricingRule(typeof(StandoutAd), 22.99m); var pricingRule2 = new GetXForYPricingRule(3, 2, typeof(ClassicAd)); var pricingRules = new List <IPricingRule>(); pricingRules.Add(pricingRule1); pricingRules.Add(pricingRule2); var checkout = new Domain.Checkout(pricingRules); var item1 = adFactory.CreateAd(typeof(StandoutAd)); var item2 = adFactory.CreateAd(typeof(ClassicAd)); var item3 = adFactory.CreateAd(typeof(ClassicAd)); var item4 = adFactory.CreateAd(typeof(ClassicAd)); checkout.Add(item1); checkout.Add(item2); checkout.Add(item3); checkout.Add(item4); var total = checkout.Total(); Assert.Equal(839.98m, total); }
public void Verify_SinglePricingRule_Discount(Type type, decimal discount, decimal expected) { var adFactory = new AdFactory(); var pricingRule = new DiscountPricingRule(type, discount); var checkout = new Domain.Checkout(new List <IPricingRule> { pricingRule }); var item1 = adFactory.CreateAd(type); var item2 = adFactory.CreateAd(type); checkout.Add(item1); checkout.Add(item2); var total = checkout.Total(); Assert.Equal(expected, total); }
public void ApplyPrice_For() { // Init var units = 3; var discountPrice = 25; var regularPricingRule = new RegularPricingRule(); var discountPricingRule = new DiscountPricingRule(units, discountPrice, regularPricingRule); var orderItem = new OrderItem { Product = new Product { UnitPrice = 10 }, Units = 4 }; // Call var price = discountPricingRule.ApplyPrice(orderItem); // Assert Assert.AreEqual(35, price); }