public void Can_Remove_Product_From_Cart()
        {
            // Подготовка
            var mockProductsRepository = new Moq.Mock<IProductsRepository>();
            var products = new List<Product>()
            {
                new Product {ProductID=14, Name="Much Ado About Nothing" },
                new Product {ProductID=27, Name="The Comedy of Errors" }
            };
            mockProductsRepository.Setup(x => x.Products)
                                  .Returns(products.AsQueryable());
            var cart = new Cart();
            var controller = new CartController(mockProductsRepository.Object, null);
            controller.AddToCart(cart, 14, "someReturnUrl");
            controller.AddToCart(cart, 27, "someReturnUrl");
            Assert.AreEqual(2, cart.Lines.Count);
            // Действие
            RedirectToRouteResult result =
                controller.RemoveFromCart(cart, 14, "someReturnUrl");
            // Утверждение
            Assert.AreEqual(1, cart.Lines.Count);
            Assert.AreEqual(27, cart.Lines[0].Product.ProductID);

            Assert.AreEqual("Index", result.RouteValues["action"]);
            Assert.AreEqual("someReturnUrl", result.RouteValues["returnUrl"]);
        }
 public void Index_Action_Renders_Default_View_With_Cart_And_ReturnUrl()
 {
     // Подготовка
     Cart cart = new Cart();
     CartController controller = new CartController(null,null);
     // Действие
     ViewResult result = controller.Index(cart, "myReturnUrl");
     // Утверждение
     Assert.IsEmpty(result.ViewName);
     Assert.AreSame(cart, result.ViewData.Model);
     Assert.AreEqual("myReturnUrl", result.ViewData["returnUrl"]);
     Assert.AreEqual("Cart", result.ViewData["CurrentCategory"]);
 }
 public void Cad_Add_Product_To_Cart()
 {
     // Подгтовка
     var mockProductsRepository = new Moq.Mock<IProductsRepository>();
     var products = new List<Product>()
     {
         new Product {ProductID=14, Name="Much Ado About Nothing" },
         new Product {ProductID=27, Name="The Comedy of Errors" }
     };
     mockProductsRepository.Setup(x => x.Products)
                           .Returns(products.AsQueryable());
     var cart = new Cart();
     var controller = new CartController(mockProductsRepository.Object, null);
     // Действие
     RedirectToRouteResult result =
         controller.AddToCart(cart, 27, "someReturnUrl");
     // Утверждение
     Assert.AreEqual(1, cart.Lines.Count);
     Assert.AreEqual("The Comedy of Errors", cart.Lines[0].Product.Name);
     Assert.AreEqual(1, cart.Lines[0].Quantity);
     // Проверка перенаправления на экран отображения корзины
     Assert.AreEqual("Index", result.RouteValues["action"]);
     Assert.AreEqual("someReturnUrl", result.RouteValues["returnUrl"]);
 }
        public void Summary_Action_Renders_View_With_Total()
        {
            CartController controller = new CartController(null, null);
            Cart cart = new Cart();
            Product p1 = new Product() { ProductID = 1, Price = 12 };
            Product p2 = new Product() { ProductID = 2, Price = 50 };
            cart.AddItem(p1, 12);
            cart.AddItem(p2, 5);

            ViewResult result = controller.Summary(cart);

            Assert.AreEqual(cart, ((Cart)result.ViewData.Model));
            Assert.AreEqual(cart.Lines.Count, ((Cart)result.ViewData.Model).Lines.Count);
            Assert.AreEqual(cart.ComputeTotalValue(), ((Cart)result.ViewData.Model).ComputeTotalValue());
        }
        public void Valie_Order_Goes_To_Submitter_And_Displays_Completed_View()
        {
            var mockSubmitter = new Moq.Mock<IOrderSubmitter>();
            CartController controller = new CartController(null, mockSubmitter.Object);
            controller.ControllerContext = new ControllerContext();
            Cart cart = new Cart();
            cart.AddItem(new Product(), 1);
            var formData = new FormCollection
            {
                {"Name","Steve" }, {"Line1","123 My Street" },
                {"Line2", "MyArea" }, {"Line3","" },
                {"City","MyCity" }, {"State","Some State" },
                {"Zip","123ABCDEF" }, {"Country","Far far away" },
                {"GiftWrap",bool.TrueString }
            };

            var result = controller.CheckOut(cart, formData);

            Assert.AreEqual("Completed", result.ViewName);
            mockSubmitter.Verify(x => x.SubmitOrder(cart));
            Assert.AreEqual(0, cart.Lines.Count);
        }
        public void Submitting_Empty_Shipping_Details_Displays_Default_View_With_Error()
        {
            CartController controller = new CartController(null,null);
            controller.ControllerContext = new ControllerContext();
            Cart cart = new Cart();
            cart.AddItem(new Product(), 1);

            var result = controller.CheckOut(cart, new FormCollection {
                {"Name", "" }
            });
            Assert.IsEmpty(result.ViewName);
            Assert.IsFalse(result.ViewData.ModelState.IsValid);
        }
        public void Submitting_Order_With_No_Lines_Displays_View_With_Error()
        {
            CartController controller = new CartController(null,null);
            Cart cart = new Cart();

            var result = controller.CheckOut(cart, new FormCollection());

            Assert.IsEmpty(result.ViewName);
            Assert.IsFalse(result.ViewData.ModelState.IsValid);
        }