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); }
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); }
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); }
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); }
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); }
public void Empty_basket_should_return_total_of_zero() { var result = Promotions.TotalAfterPromotions(emptyBasket, emptyPromotions); result.Should().Be(0M); }