Пример #1
0
        public void CanCheckOutAndCreateOrder()
        {
            IRepository <Product> products = new MockContext <Product>();

            products.Insert(new Product()
            {
                Id = "1", Price = 10.00m
            });
            products.Insert(new Product()
            {
                Id = "2", Price = 4.00m
            });

            IRepository <Basket> baskets = new MockContext <Basket>();
            Basket basket = new Basket();

            basket.BasketItems.Add(new BasketItem()
            {
                ProductId = "1", Quantity = 2, BasketId = basket.Id
            });
            basket.BasketItems.Add(new BasketItem()
            {
                ProductId = "1", Quantity = 1, BasketId = basket.Id
            });

            baskets.Insert(basket);
            baskets.Commit();

            IBasketService      basketService = new BasketService(products, baskets);
            IRepository <Order> orders        = new MockContext <Order>();
            IOrderService       orderService  = new OrderService(orders);

            var controller  = new BasketController(basketService, orderService);
            var httpContext = new MockHttpContext();

            httpContext.Request.Cookies.Add(new System.Web.HttpCookie("eCommerceBasket")
            {
                Value = basket.Id
            });

            controller.ControllerContext = new ControllerContext(httpContext, new System.Web.Routing.RouteData(), controller);

            Order order = new Order();

            //Act
            controller.Checkout(order);

            //Assert
            Assert.AreEqual(2, order.OrderItems.Count);
            //Checkout clears the basket. So the count should be 0 after this has happened.
            Assert.AreEqual(0, basket.BasketItems.Count);

            Order orderInRep = orders.Find(order.Id);

            Assert.AreEqual(2, orderInRep.OrderItems.Count);
        }