public void OrderWithNoPromotion() { IList <Product> products = GetProductCatalogue(); IList <Promotion> promotions = GetActivePromotion(); //product ordered IList <Product> orderedProduct = new List <Product>(); orderedProduct.Add(new Product() { Name = 'A', Quantity = 1 }); orderedProduct.Add(new Product() { Name = 'B', Quantity = 1 }); orderedProduct.Add(new Product() { Name = 'C', Quantity = 1 }); Order order = new Order(orderedProduct); PromotionCalculator promotionCalculator = new PromotionCalculator(); int result = promotionCalculator.GetPromotion(products, order, promotions); Assert.AreEqual(result, 100); }
public void ScenanarioC() { //ARRANGE var A = new Product() { Name = "A", Price = 50 }; var B = new Product() { Name = "B", Price = 30 }; var C = new Product() { Name = "C", Price = 20 }; var D = new Product() { Name = "D", Price = 15 }; var productBundles = new ProductBundles(); //scenario b data set var cart = new Cart(); cart.Add(A); cart.Add(A); cart.Add(A); cart.Add(B); cart.Add(B); cart.Add(B); cart.Add(B); cart.Add(B); cart.Add(C); cart.Add(D); //Yes, we go definitly use Product instead of string, but let's KISS var flattenedCart = new List <string>(cart.CartProducts.Select(p => p.Name).ToList()); //Returning result from the recursing method - could perhaps have yieled var cartBundles = new List <string>(); var promotionCalculator = new PromotionCalculator(); //Find the applicabale bundles in the cart promotionCalculator.ApplicablePromotions(flattenedCart, productBundles.ActiveBundles, cartBundles); //Explicit Sum by remaing cart items var sum = cart.Sum(flattenedCart); //Plus prices for bundles sum += cart.Sum(cartBundles, productBundles.ActiveBundles); //ASSERT Assert.True(sum == 280); }
public decimal GetBasketValue() { InitializeCartItems(); PromotionCalculator promotionCalculator = new PromotionCalculator(_cartItems, PromotionRules.GetPromotions()); _finalValue = promotionCalculator.ComputeResult(); return(_finalValue); }
public void GivenNoScannedItems_TotalReturnsZero() { const decimal expectedTotal = 0; var priceReader = new MemoryPriceReader(); var promotionCalculator = new PromotionCalculator(); var checkout = new Checkout(priceReader, promotionCalculator); var total = checkout.Total(); Assert.AreEqual(expectedTotal, total); }
public void ScanOneProduct_TotalReturnsPrice() { const decimal expectedTotal = 0.5m; var priceReader = new MemoryPriceReader(); var promotionCalculator = new PromotionCalculator(); var checkout = new Checkout(priceReader, promotionCalculator); var item = new Item("A99"); checkout.Scan(item); var total = checkout.Total(); Assert.AreEqual(expectedTotal, total); }
public void ScanTwoProducts_TotalReturnsPriceOfBoth() { const decimal expectedTotal = 0.8m; var priceReader = new MemoryPriceReader(); var promotionCalculator = new PromotionCalculator(); var checkout = new Checkout(priceReader, promotionCalculator); var itemA = new Item("A99"); var itemB = new Item("B15"); checkout.Scan(itemA); checkout.Scan(itemB); var total = checkout.Total(); Assert.AreEqual(expectedTotal, total); }
static void Main(string[] args) { Console.WriteLine("Set SKU unit price"); Dictionary <char, int> orders = new Dictionary <char, int>(); orders.Add('A', 1); orders.Add('B', 1); orders.Add('C', 1); Console.WriteLine("Calculate Promotion price"); PromotionCalculator _calculator = new PromotionCalculator(); decimal totalPrice = _calculator.CalculatePromotionPrice(orders); Console.WriteLine(string.Format("The total price is: {0}", totalPrice)); }
public void OneDiscount() { List <CartSKU> cartItems = new List <CartSKU> { new CartSKU { SKUName = "a", SKUQuantity = 5 }, new CartSKU { SKUName = "b", SKUQuantity = 5 }, new CartSKU { SKUName = "c", SKUQuantity = 1 } }; PromotionCalculator PromoCalObj = new PromotionCalculator(new PromotionSKUObj()); int Total = PromoCalObj.GetCartTotalAmount(cartItems); //Assert Assert.AreEqual(370, Total); }
public void TwoB15_Returns045() { const decimal expectedTotal = 0.45m; var priceReader = new MemoryPriceReader(); var promotions = new List <IPromotion> { new A99Promotion(), new B15Promotion() }; var promotionCalculator = new PromotionCalculator(promotions); var checkout = new Checkout(priceReader, promotionCalculator); var item = new Item("B15"); checkout.Scan(item); checkout.Scan(item); var total = checkout.Total(); Assert.AreEqual(expectedTotal, total); }
public void NullValueEntry() { List <CartSKU> cartItems = new List <CartSKU> { new CartSKU { SKUName = "a", SKUQuantity = 3 }, new CartSKU { SKUName = "b", SKUQuantity = 5 }, new CartSKU { SKUName = "c", SKUQuantity = 0 }, new CartSKU { SKUName = "d", SKUQuantity = 1 } }; PromotionCalculator PromoCalObj = new PromotionCalculator(new PromotionSKUObj()); int Total = PromoCalObj.GetCartTotalAmount(cartItems); //Assert Assert.AreEqual(265, Total); }