Example #1
0
        public void GetBasketAggregation_WhenCalledWithInvalidBasketItem_ThrowsException()
        {
            var basketItems = new List <int>()
            {
                1, 2, 6
            };
            var booksInSeries = 5;

            Assert.ThrowsException <Exception>(() => _basketHelper.GetBasketAggregation(basketItems, booksInSeries));
        }
Example #2
0
        private decimal GetPrice(List <int> basket, int numberOfBooksInSeries)
        {
            // group identical items in basket
            var groupedBasket = _basketHelper.GetBasketAggregation(basket, numberOfBooksInSeries);
            // get all combinations for consideration
            var allCombos = _basketSplitter.GetBasketCombinations(groupedBasket, numberOfBooksInSeries);

            // return the lowest price
            return(_priceCalculator.GetLowestPrice(allCombos));
        }
        public void GetLowestPrice_WhenCalledWithBasketCombinationsMultiple1_ReturnsCorrectPrice()
        {
            var basketItems = new List <int>()
            {
                1, 1, 2, 2, 3, 3, 4, 5
            };
            var booksInSeries = 5;

            var groupedBasket = _basketHelper.GetBasketAggregation(basketItems, booksInSeries);
            var allCombos     = _basketSplitter.GetBasketCombinations(groupedBasket, booksInSeries);
            var price         = _priceCalculator.GetLowestPrice(allCombos);

            Assert.AreEqual(51.2m, price);
        }