Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }