public void GivenProductsAddedWhenCalculatingTotalWithOffersThenOfferAppliedToTotal()
        {
            var weightProduct = new WeightProduct {
                Name = "Gala Apple", Price = 10
            };
            var quantityProduct = new QuantityProduct {
                Name = "Lucky Stars 500g", Price = 399
            };
            var quantityProduct2 = new WeightProduct {
                Name = "Chocolate", Price = 50
            };

            var offer1 = Substitute.For <IOffer>();

            offer1.ApplyOffer(quantityProduct, 2).Returns(399);

            var offer2 = Substitute.For <IOffer>();

            offer2.ApplyOffer(weightProduct, 9).Returns(67.5m);

            var currentOffers = new Dictionary <string, IOffer>
            {
                { quantityProduct.Name, offer1 },
                { weightProduct.Name, offer2 }
            };

            _cashRegister.AddProduct(weightProduct, 9);
            _cashRegister.AddProduct(quantityProduct, 2);
            _cashRegister.AddProduct(quantityProduct2, 5);


            var total = _cashRegister.CalculateTotal(null, currentOffers);

            Assert.That(total, Is.EqualTo(716.5m));
        }
        public void GivenProductNotAddedWhenAddingQuantityProductThenProductShouldBeAdded()
        {
            var product = new QuantityProduct {
                Name = "Lucky Stars 500g"
            };

            _cashRegister.AddProduct(product, 2);

            Assert.That(_cashRegister.Products[product.Name].Quantity, Is.EqualTo(2));
        }
Beispiel #3
0
        public void When75PercentOffApplyOfferCalledThenTotalPriceReduced()
        {
            var product = new QuantityProduct {
                Price = 399
            };

            var offer = new Seventy5PercentOff();

            var totalPrice = offer.ApplyOffer(product, 1);

            Assert.That(totalPrice, Is.EqualTo(99.75m));
        }
Beispiel #4
0
        public void GivenProductQuantitiesWhenBogogApplyOfferCalledThenTotalPriceReduced(int quantity, int expectedPrice)
        {
            var product = new QuantityProduct {
                Price = 10
            };

            var bogof = new BuyOneGetOneFreeOffer();

            var totalPrice = bogof.ApplyOffer(product, quantity);

            Assert.That(totalPrice, Is.EqualTo(expectedPrice));
        }
        public void GivenProductsAddedWhenCalculatingTotalThenTotalReturned()
        {
            var weightProduct = new WeightProduct {
                Name = "Gala Apple", Price = 49
            };
            var quantityProduct = new QuantityProduct {
                Name = "Lucky Stars 500g", Price = 399
            };

            _cashRegister.AddProduct(weightProduct, 100);
            _cashRegister.AddProduct(quantityProduct, 2);

            var total = _cashRegister.CalculateTotal(null, null);

            Assert.That(total, Is.EqualTo(5698));
        }
        public void GivenProductsAddedWhenCalculatingTotalWithCouponThenDiscountAppliedToTotal()
        {
            var weightProduct = new WeightProduct {
                Name = "Gala Apple", Price = 10
            };
            var quantityProduct = new QuantityProduct {
                Name = "Lucky Stars 500g", Price = 3
            };

            _cashRegister.AddProduct(weightProduct, 9);
            _cashRegister.AddProduct(quantityProduct, 3);

            var coupon = Substitute.For <ICoupon>();

            coupon.ApplyDiscount(99).Returns(50);

            var total = _cashRegister.CalculateTotal(coupon, null);

            Assert.That(total, Is.EqualTo(50));
        }