public void OrdersCombinedByItem_CombinesOrders() { IGroceryItem itemA = new Mock <IGroceryItem>().Object; IGroceryItem itemB = new Mock <IGroceryItem>().Object; CheckoutCart cart = new CheckoutCart(); cart.Orders.Add(new GroceryItemOrderFake(itemA, 1.50M)); cart.Orders.Add(new GroceryItemOrderFake(itemB, 2.00M)); cart.Orders.Add(new GroceryItemOrderFake(itemB, 2.50M)); cart.Orders.Add(new GroceryItemOrderFake(itemB, 2.00M)); cart.Orders.Add(new GroceryItemOrderFake(itemA, 3.50M)); Assert.AreEqual(2, cart.OrdersCombinedByItem.Count()); foreach (IGroceryItemOrder order in cart.OrdersCombinedByItem) { if (order.Item == itemA) { Assert.AreEqual(5.00M, order.Price); } else if (order.Item == itemB) { Assert.AreEqual(6.50M, order.Price); } } }
public List <CheckoutCart> ManageDataFromCartCID(string username) { // dbcontext = new ShoppingCartContext();/ List <Cart> cart = dbcontext.Carts .Where(x => x.CustomerID == username).ToList(); List <CheckoutCart> productList = new List <CheckoutCart>(); foreach (Cart c in cart) { Product products = dbcontext.Products .Where(x => x.ProductID == c.ProductID).FirstOrDefault(); CheckoutCart cc = new CheckoutCart(); cc.ProductID = products.ProductID; cc.ProductName = products.ProductName; cc.ProductDescription = products.Description; cc.Image = products.ImageURL; cc.ProductPrice = products.ProductPrice; cc.ProductQty = c.CartQuantity; productList.Add(cc); } if (productList != null) { return(productList); } else { return(null); } }
public void TotalPrice_CalculatesTotalPriceFromOrders() { CheckoutCart cart = new CheckoutCart(); cart.Orders.Add(new GroceryItemOrderFake(1.50M)); cart.Orders.Add(new GroceryItemOrderFake(2.00M)); Assert.AreEqual(3.50M, cart.TotalPrice); }
public void Orders_CanAddWeighedItem() { WeighedGroceryItemOrder weighedOrder = new WeighedGroceryItemOrder(null, 3M); CheckoutCart cart = new CheckoutCart(); Assert.AreEqual(0, cart.Orders.Count); cart.Orders.Add(weighedOrder); Assert.AreEqual(1, cart.Orders.Count); }
public void Orders_CanAddEachesItem() { EachesGroceryItemOrder eachesOrder = new EachesGroceryItemOrder(null, 3); CheckoutCart cart = new CheckoutCart(); Assert.AreEqual(0, cart.Orders.Count); cart.Orders.Add(eachesOrder); Assert.AreEqual(1, cart.Orders.Count); }
public void CombineOrdersForItem_GroupsOrderByItem() { IGroceryItem itemA = new Mock <IGroceryItem>().Object; IGroceryItem itemB = new Mock <IGroceryItem>().Object; CheckoutCart cart = new CheckoutCart(); cart.Orders.Add(new GroceryItemOrderFake(itemA, 1.50M)); cart.Orders.Add(new GroceryItemOrderFake(itemB, 2.00M)); cart.Orders.Add(new GroceryItemOrderFake(itemB, 2.50M)); cart.Orders.Add(new GroceryItemOrderFake(itemB, 2.00M)); cart.Orders.Add(new GroceryItemOrderFake(itemA, 3.50M)); Assert.AreEqual(5.00M, cart.CombineOrdersForItem(itemA).Price); Assert.AreEqual(6.50M, cart.CombineOrdersForItem(itemB).Price); }
public void CombineOrdersForItem_ThrowsException_IfItemDoesntExist() { IGroceryItem itemA = new Mock <IGroceryItem>().Object; IGroceryItem itemB = new Mock <IGroceryItem>().Object; IGroceryItem unusedItem = new Mock <IGroceryItem>().Object; CheckoutCart cart = new CheckoutCart(); cart.Orders.Add(new GroceryItemOrderFake(itemA, 1.50M)); cart.Orders.Add(new GroceryItemOrderFake(itemB, 2.00M)); cart.Orders.Add(new GroceryItemOrderFake(itemB, 2.50M)); cart.Orders.Add(new GroceryItemOrderFake(itemB, 2.00M)); cart.Orders.Add(new GroceryItemOrderFake(itemA, 3.50M)); Assert.ThrowsException <InvalidOperationException>(() => cart.CombineOrdersForItem(unusedItem)); }
public void RemovingEachesOrder_InvalidatesSpecial() { decimal priceForThree = 5.00M; EachesGroceryItem soup = new EachesGroceryItem("soup", 2.00M) { Special = new BuyNForXEachesGroceryItemSpecial(3, priceForThree) }; CheckoutCart cart = new CheckoutCart(); for (int i = 0; i < 3; i++) { cart.Orders.Add(new EachesGroceryItemOrder(soup, 1)); } Assert.AreEqual(priceForThree, cart.TotalPrice); cart.Orders.Remove(cart.Orders.Last()); Assert.AreEqual(4.00M, cart.TotalPrice); }
public void TotalPrice_UsesCombinesOrders() { IGroceryItem itemA = new Mock <IGroceryItem>().Object; IGroceryItem itemB = new Mock <IGroceryItem>().Object; CheckoutCart cart = new CheckoutCart(); cart.Orders.Add(new GroceryItemOrderMultiplierFake(itemA, 2.00M)); cart.Orders.Add(new GroceryItemOrderMultiplierFake(itemB, 3.00M)); cart.Orders.Add(new GroceryItemOrderMultiplierFake(itemB, 3.00M)); cart.Orders.Add(new GroceryItemOrderMultiplierFake(itemB, 3.00M)); cart.Orders.Add(new GroceryItemOrderMultiplierFake(itemA, 2.00M)); // when the order fakes are combined, the prices should be multiplied // A should be 2*2 = 4 // B should be 3*3*3 = 27 // 4 + 27 = 31 Assert.AreEqual(31.00M, cart.TotalPrice); }
public void RemovingWeighedOrder_InvalidatesSpecial() { WeighedGroceryItem bananas = new WeighedGroceryItem("bananas", 2.00M) { Special = new BuyNGetUpToMDiscountedWeighedGroceryItemSpecial(3.00M, 50M) }; CheckoutCart cart = new CheckoutCart(); for (int i = 0; i < 4; i++) { cart.Orders.Add(new WeighedGroceryItemOrder(bananas, 1)); } // first 3 are full price ($2 per unit) // last is 50% off, $1 Assert.AreEqual(7.00M, cart.TotalPrice); cart.Orders.Remove(cart.Orders.Last()); Assert.AreEqual(6.00M, cart.TotalPrice); }