Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }