예제 #1
0
        public void Basket_with_single_item_and_no_promotions_should_return_unit_cost_of_that_item()
        {
            var itemPrice = 10M;
            var basket    = new List <BasketItem>()
            {
                new BasketItem("A", 1, itemPrice)
            };

            var result = Promotions.TotalAfterPromotions(basket, emptyPromotions);

            result.Should().Be(itemPrice);
        }
예제 #2
0
        public void ScenarioB()
        {
            var basket = new List <BasketItem>()
            {
                new BasketItem("A", 5, 50),
                new BasketItem("B", 5, 30),
                new BasketItem("C", 1, 20)
            };

            var total = Promotions.TotalAfterPromotions(basket, scenarioPromotions);

            total.Should().Be(370M);
        }
예제 #3
0
        public void SingleMultibuy()
        {
            var basket = new List <BasketItem>()
            {
                new BasketItem("A", 3, 50M)
            };

            var promotions = new List <Promotion>()
            {
                new Promotion("3A for 130", Promotions.MakeMultibuy("A", 3, 130M))
            };
            var result = Promotions.TotalAfterPromotions(basket, promotions);

            result.Should().Be(130);
        }
예제 #4
0
        public void Complex_basket_with_no_promotins_returns_total()
        {
            var basket = new List <BasketItem>()
            {
                new BasketItem("A", 2, 20M),
                new BasketItem("B", 3, 30M),
                new BasketItem("C", 4, 40M)
            };

            var total = 2 * 20M + 3 * 30M + 4 * 40M;

            var result = Promotions.TotalAfterPromotions(basket, emptyPromotions);

            result.Should().Be(total);
        }
예제 #5
0
        public void SinglePairedBuy()
        {
            var basket = new List <BasketItem>()
            {
                new BasketItem("C", 1, 20M),
                new BasketItem("D", 1, 15M)
            };

            var promotions = new List <Promotion>()
            {
                new Promotion("C + D for 30", Promotions.MakePairedBuy("C", "D", 30M))
            };
            var result = Promotions.TotalAfterPromotions(basket, promotions);

            result.Should().Be(30);
        }
예제 #6
0
        public void Empty_basket_should_return_total_of_zero()
        {
            var result = Promotions.TotalAfterPromotions(emptyBasket, emptyPromotions);

            result.Should().Be(0M);
        }