private void AddDiscountLineItems(Basket basket, int itemsToBeAdded, QuantityDiscountRule rule, bool reverse = false) { for (var i = 0; i < itemsToBeAdded; i++) { basket.LineItems.Add(new LineItem() { Quanity = 1, Sku = rule.OfferSku, UnitPrice = reverse? rule.DiscountAmount : -1 * rule.DiscountAmount }); } }
public void When_promotion_applies() { var productCatalog = new ProductCatalog(); productCatalog.AddQuantityDiscount("apple", 3, 2); productCatalog.AddProduct("apple", 0.75m); var sut = new QuantityDiscountRule(productCatalog); var promotions = new Promotions(new List <IPromotionalDiscountRule>() { sut }); var lineItem = new LineItem("apple", 7, productCatalog, promotions); var actual = sut.PromotionApplies(lineItem); Assert.That(actual, Is.True); }
public void When_calculating_rule() { var productCatalog = new ProductCatalog(); productCatalog.AddQuantityDiscount("apple", 3, 2); productCatalog.AddProduct("apple", 0.75m); var sut = new QuantityDiscountRule(productCatalog); var promotions = new Promotions(new List <IPromotionalDiscountRule>() { sut }); var lineItem = new LineItem("apple", 7, productCatalog, promotions); var actual = sut.Calculate(lineItem); Assert.That(actual.DiscountedSubTotal, Is.EqualTo(4.75m)); Assert.That(actual.DiscountNote, Is.EqualTo("***Discount on apple: Buy 3 apple for $2.00, New Price $4.75, Savings $0.50")); }