Beispiel #1
0
        public void GivenNullProduct_WhenApplyDiscount_ThenThrowsException()
        {
            var discount = new BuyManyGetOneFree();

            Assert.Throws <ArgumentNullException>(() =>
            {
                discount.ApplyDiscount(null);
            });
        }
Beispiel #2
0
        public void GivenProduct_WhenApplyDiscountBuy4Get1Free_ThenReturnsCorrectPrice(int qty, int minimumToBuy, decimal price, decimal result)
        {
            var discount = new BuyManyGetOneFree();
            var item     = new BasketItem
            {
                Quantity           = qty,
                AfterDiscountPrice = 0,
                DiscountRuleType   = DiscountRuleType.BuyManyGetOneFree,
                DiscountParameter  = minimumToBuy,
                Product            = new Product
                {
                    Price = price
                }
            };

            discount.ApplyDiscount(item);

            Assert.AreEqual(result, item.AfterDiscountPrice);
        }
Beispiel #3
0
        public void GivenProductHasNotMatchingDiscountRule_WhenApplyDiscount_ThenThrowsException()
        {
            var discount = new BuyManyGetOneFree();
            var item     = new BasketItem
            {
                Quantity           = 2,
                AfterDiscountPrice = 0,
                DiscountRuleType   = DiscountRuleType.None,
                Product            = new Product
                {
                    Price = (decimal)12.33
                }
            };

            Assert.Throws <InvalidOperationException>(() =>
            {
                discount.ApplyDiscount(item);
            });
        }