Ejemplo n.º 1
0
        public void GivenDiscountType_WhenResolveDiscountRule_ThenReturnsCorrectRuleInstance_3()
        {
            var factory      = new DiscountRuleFactory();
            var discountRule = factory.ResolveDiscountRule(DiscountRuleType.Percentage);

            Assert.AreEqual(typeof(PercentageRule), discountRule.GetType());
        }
Ejemplo n.º 2
0
        private static Basket GetBasketInstance()
        {
            var discountFactory = new DiscountRuleFactory();
            var calculator      = new BasketPriceCalculator(discountFactory);

            return(new Basket(calculator));
        }
Ejemplo n.º 3
0
        public void GivenDiscountType_WhenResolveDiscountRule_ThenReturnsCorrectRuleInstance_2()
        {
            var factory      = new DiscountRuleFactory();
            var discountRule = factory.ResolveDiscountRule(DiscountRuleType.BuyManyGetOneFree);

            Assert.AreEqual(typeof(BuyManyGetOneFree), discountRule.GetType());
        }
Ejemplo n.º 4
0
 public void GivenWrongDiscountType_WhenResolveDiscountRule_ThenThrowsException()
 {
     Assert.Throws <ArgumentException>(() =>
     {
         var factory = new DiscountRuleFactory();
         factory.ResolveDiscountRule((DiscountRuleType)4);
     });
 }
Ejemplo n.º 5
0
        public void GivenBasketItem_Percentage_WhenApplyDiscount_ThenItemIsUpdatedCorrectly()
        {
            var discountFactory = new DiscountRuleFactory();
            var calculator      = new BasketPriceCalculator(discountFactory);

            var item = new BasketItem
            {
                Quantity           = 2,
                AfterDiscountPrice = 0,
                DiscountParameter  = 10,
                DiscountRuleType   = DiscountRuleType.Percentage,
                Product            = new Product
                {
                    Price = (decimal)20.10
                }
            };

            calculator.ApplyDiscount(item);

            Assert.AreEqual(36.18, item.AfterDiscountPrice);
        }
Ejemplo n.º 6
0
        public void GivenBasketItem_Buy2Get1Free_WhenApplyDiscount_ThenItemIsUpdatedCorrectly()
        {
            var discountFactory = new DiscountRuleFactory();
            var calculator      = new BasketPriceCalculator(discountFactory);

            var item = new BasketItem
            {
                Quantity           = 3,
                AfterDiscountPrice = (decimal)10.50,
                DiscountRuleType   = DiscountRuleType.BuyManyGetOneFree,
                DiscountParameter  = 3,
                Product            = new Product
                {
                    Price = (decimal)10.50
                }
            };

            calculator.ApplyDiscount(item);

            Assert.AreEqual(21, item.AfterDiscountPrice);
        }
Ejemplo n.º 7
0
        public void GivenBasketItems_WhenCalculateTotal_ThenReturnsCorrectTotal()
        {
            var discountFactory = new DiscountRuleFactory();
            var calculator      = new BasketPriceCalculator(discountFactory);

            var item = new BasketItem
            {
                Quantity           = 2,
                AfterDiscountPrice = (decimal)10.50,
                DiscountRuleType   = DiscountRuleType.BuyManyGetOneFree,
                DiscountParameter  = 2,
                Product            = new Product
                {
                    Price = (decimal)10.50
                }
            };

            var items = Enumerable.Repeat(item, 3);
            var total = calculator.CalculateTotal(items);

            Assert.AreEqual(31.50, total);
        }