public void CanAddBasketControllerItem()
        {
            //Setup
            IRepository <Basket>   baskets  = new MockContext <Basket>();
            IRepository <Product>  products = new MockContext <Product>();
            IRepository <Order>    order    = new MockContext <Order>();
            IRepository <Customer> customer = new MockContext <Customer>();

            var httpContext = new HttpMockContext();

            IBasketService basketService = new BasketService(products, baskets);
            IOrderService  orderService  = new OrderService(order);
            var            controller    = new BasketController(basketService, orderService, customer);

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

            //Act
            controller.AddToBasket("1");

            Basket basket = baskets.Collection().FirstOrDefault();

            //Assert
            Assert.IsNotNull(basket);
            Assert.AreEqual(1, basket.BasketItems.Count);
            Assert.AreEqual("1", basket.BasketItems.ToList().FirstOrDefault().ProductId);
        }
        public void CanCheckOutAndCreateOrder()
        {
            //Setup
            IRepository <Basket>   baskets  = new MockContext <Basket>();
            IRepository <Product>  products = new MockContext <Product>();
            IRepository <Order>    orders   = new MockContext <Order>();
            IRepository <Customer> customer = new MockContext <Customer>();

            // creacion de productos
            products.Insert(new Product("1", "Cosa1", 5));
            products.Insert(new Product("2", "Cosa2", 10));
            products.Insert(new Product("3", "Cosa3", 15));

            // creacion de un cliente
            customer.Insert(new Customer("1", "Tony", "Stark", "*****@*****.**", "something", "Los Angeles", "California", "00000"));
            IPrincipal FakeUser = new GenericPrincipal(new GenericIdentity("*****@*****.**", "Forms"), null);

            // insercion de productos en la cesta
            Basket basket = new Basket();

            basket.BasketItems.Add(new BasketItem("1", "1", 2));
            basket.BasketItems.Add(new BasketItem("1", "2", 1));
            baskets.Insert(basket);
            IBasketService basketService = new BasketService(products, baskets);
            IOrderService  orderService  = new OrderService(orders);

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

            httpContext.User = FakeUser;
            httpContext.Request.Cookies.Add(new System.Web.HttpCookie("eCommerceBasket")
            {
                Value = basket.Id
            });                                                                                                                               // creacion de un contexto para crear y leer cookies
            controller.ControllerContext = new System.Web.Mvc.ControllerContext(httpContext, new System.Web.Routing.RouteData(), controller); // añadir el contexto al controlador

            //Act
            Order order = new Order();

            controller.Checkout(order);

            //Assert
            Assert.AreEqual(2, order.OrderItems.Count);
            Assert.AreEqual(0, basket.BasketItems.Count);

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

            Assert.AreEqual(2, orderInRep.OrderItems.Count);
        }
示例#3
0
        public void CanGetSummaryViewModel()
        {
            //SETUP
            IRepository <Basket>   baskets   = new MockContext <Basket>();
            IRepository <Product>  products  = new MockContext <Product>();
            IRepository <Order>    orders    = new MockContext <Order>();
            IRepository <Customer> Customers = new MockContext <Customer>();

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

            Basket basket = new Basket();

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

            baskets.Insert(basket);

            IBasketService basketService = new BasketService(products, baskets);
            IOrderService  orderService  = new OrderService(orders);
            var            controller    = new BasketController(basketService, orderService, Customers);

            var httpContext = new HttpMockContext();

            httpContext.Request.Cookies.Add(new HttpCookie("eCommerceBasket")
            {
                Value = basket.Id
            });
            controller.ControllerContext = new System.Web.Mvc.ControllerContext(httpContext, new System.Web.Routing.RouteData(), controller);


            var result        = controller.BasketSummary() as PartialViewResult;
            var basketSummary = (BasketSummaryViewModel)result.ViewData.Model;

            Assert.AreEqual(3, basketSummary.BasketCount);
            Assert.AreEqual(100.00m, basketSummary.BasketTotal);
        }
        public void CanAddBasketServiceItem()
        {
            //Setup
            IRepository <Basket>  baskets  = new MockContext <Basket>();
            IRepository <Product> products = new MockContext <Product>();

            var httpContext = new HttpMockContext();

            IBasketService basketService = new BasketService(products, baskets);

            //Act
            basketService.AddToBasket(httpContext, "1");

            Basket basket = baskets.Collection().FirstOrDefault();

            //Assert
            Assert.IsNotNull(basket);
            Assert.AreEqual(1, basket.BasketItems.Count);
            Assert.AreEqual("1", basket.BasketItems.ToList().FirstOrDefault().ProductId);
        }
        public void CanGetSummaryViewModel()
        {
            //Setup
            IRepository <Basket>   baskets  = new MockContext <Basket>();
            IRepository <Product>  products = new MockContext <Product>();
            IRepository <Order>    order    = new MockContext <Order>();
            IRepository <Customer> customer = new MockContext <Customer>();

            //Act
            products.Insert(new Product("1", "Cosa1", 5));
            products.Insert(new Product("2", "Cosa2", 10));
            products.Insert(new Product("3", "Cosa3", 15));

            Basket basket = new Basket();

            basket.BasketItems.Add(new BasketItem("1", "1", 2));
            basket.BasketItems.Add(new BasketItem("1", "2", 1));
            baskets.Insert(basket);
            IBasketService basketService = new BasketService(products, baskets);
            IOrderService  orderService  = new OrderService(order);

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

            httpContext.Request.Cookies.Add(new System.Web.HttpCookie("eCommerceBasket")
            {
                Value = basket.Id
            });
            controller.ControllerContext = new System.Web.Mvc.ControllerContext(httpContext, new System.Web.Routing.RouteData(), controller);

            var result        = controller.BasketSummary() as PartialViewResult;
            var basketSummary = (BasketSummaryViewModel)result.ViewData.Model;

            //Assert
            Assert.AreEqual(3, basketSummary.BasketCount);
            Assert.AreEqual(20, basketSummary.BasketTotal);
        }
示例#6
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 = 5.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 = "2", Quantity = 1, BasketId = basket.Id
            });


            baskets.Insert(basket);


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

            Customers.Insert(new Customer()
            {
                Id = "1", Email = "*****@*****.**", ZipCode = "5555"
            });

            IPrincipal FakeUser = new GenericPrincipal(new GenericIdentity("*****@*****.**", "Forms"), null);

            var controller  = new BasketController(basketService, orderService, Customers);
            var httpContext = new HttpMockContext
            {
                User = FakeUser
            };

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

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


            //Act
            Order order = new Order();

            controller.Checkout(order);

            //Assert

            Assert.AreEqual(2, order.OrderItems.Count);
            Assert.AreEqual(0, basket.BasketItems.Count);

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

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