public void Can_Remove_Product_From_Cart() { // Arrange: Set up a mock repository with two products var mockProductsRepos = new Moq.Mock<IProductsRepository>(); var products = new System.Collections.Generic.List<Product> { new Product { ProductID = 14, Name = "Much Ado About Nothing" }, new Product { ProductID = 27, Name = "The Comedy of Errors" }, }; mockProductsRepos.Setup(x => x.Products) .Returns(products.AsQueryable()); var cart = new Cart(); cart.AddItem(products[1], 2); // 2x Comedy of Errors cart.AddItem(products[0], 3); // 3x Much Ado var controller = new CartController(mockProductsRepos.Object, null); // Act: Try removing Much Ado RedirectToRouteResult result = controller.RemoveFromCart(cart, 14, "someReturnUrl"); // Assert Assert.AreEqual(1, cart.Lines.Count); Assert.AreEqual("The Comedy of Errors", cart.Lines[0].Product.Name); Assert.AreEqual(2, cart.Lines[0].Quantity); // Check that the visitor was redirected to the cart display screen Assert.AreEqual("Index", result.RouteValues["action"]); Assert.AreEqual("someReturnUrl", result.RouteValues["returnUrl"]); }
public void Can_View_Cart_Contents() { var cart = new Cart(); var target = new CartController(null,null,null,null,null); // var result = (CartIndexViewModel)target.Index(cart, "myUrl").ViewData.Model; // Assert.AreSame(result.Cart, cart); Assert.AreEqual(result.ReturnUrl, "myUrl"); }
public void Cannot_Checkout_Empty_Cart() { var mock = new Mock<IOrderProcessor>(); var cart = new Cart(); var shippingDetails = new ShippingDetails(); var target = new CartController(null, mock.Object); ViewResult result = target.Checkout(cart, shippingDetails); mock.Verify(m => m.ProcessOrder(It.IsAny<Cart>(), It.IsAny<ShippingDetails>()), Times.Never()); Assert.AreEqual("", result.ViewName); Assert.AreEqual(false, result.ViewData.ModelState.IsValid); }
public void Cannot_Checkout_Invalid_ShippingDetails() { var mock = new Mock<IOrderProcessor>(); var cart = new Cart(); cart.AddItem(new Product(), 1); var target = new CartController(null, mock.Object); target.ModelState.AddModelError("error", "error"); ViewResult result = target.Checkout(cart, new ShippingDetails()); mock.Verify(m => m.ProcessOrder(It.IsAny<Cart>(), It.IsAny<ShippingDetails>()), Times.Never()); Assert.AreEqual("", result.ViewName); Assert.AreEqual(false, result.ViewData.ModelState.IsValid); }
public void Addig_Products_To_Cart_Goes_To_Cart_Screen() { var mock = new Mock<IProductRepository>(); mock.Setup(m => m.Products).Returns(new[] { new Product {ProductID = 1, Name = "p1", Category = "Apples"} }.AsQueryable()); var cart = new Cart(); var target = new CartController(mock.Object, null); var result = target.AddToCart(cart, 2, "myUrl"); Assert.AreEqual(result.RouteValues["action"], "Index"); Assert.AreEqual(result.RouteValues["returnUrl"], "myUrl"); }
public void Index_Action_Renders_Default_View_With_Cart_And_ReturnUrl() { // Set up the controller Cart cart = new Cart(); CartController controller = new CartController(null, null); // Invoke action method ViewResult result = controller.Index(cart, "myReturnUrl"); // Verify results Assert.IsEmpty(result.ViewName); // Renders default view Assert.AreSame(cart, result.ViewData.Model); Assert.AreEqual("myReturnUrl", result.ViewData["returnUrl"]); Assert.AreEqual("Cart", result.ViewData["CurrentCategory"]); }
public void Can_Add_To_Cart() { var mock = new Mock<IProductRepository>(); mock.Setup(m => m.Products).Returns(new[] { new Product {ProductID = 1, Name = "P1", ProductCategory =new ProductCategory{Name = "A"}} }.AsQueryable()); var cart = new Cart(); var target = new CartController(mock.Object, null,null,null,null); target.AddToCart(cart, 1, null); Assert.AreEqual(cart.Lines.Count(), 1); Assert.AreEqual(cart.Lines.ToArray()[0].Product.ProductID, 1); }
public void Change_Quantity_Product() { var mock = new Mock<IProductRepository>(); mock.Setup(m => m.Products).Returns(new[] { new Product {ProductID = 1, Name = "P1"} }.AsQueryable()); var cart = new Cart(); var target = new CartController(mock.Object, null, null, null, null); // target.AddToCart(cart, 1, null);//добавим target.ChangeQuantity(cart, 1, null,2);// сменим кол-во // Assert.AreEqual(cart.Lines.ElementAt(0).Quantity, 2); }
public void Cannot_Checkout_Empty_Cart() { // Организация - создание пустой корзины Cart cart = new Cart(); // Организация - создание деталей о доставке ShippingDetails shippingDetails = new ShippingDetails(); // Организация - создание контроллера CartController controller = new CartController(null); // Действие ViewResult result = controller.Checkout(cart, shippingDetails); // Утверждение — проверка, что метод вернул стандартное представление Assert.AreEqual("", result.ViewName); // Утверждение - проверка, что-представлению передана неверная модель Assert.AreEqual(false, result.ViewData.ModelState.IsValid); }
public void Cannot_Checkout_Invalid_ShippingDetails() { // Организация — создание корзины с элементом Cart cart = new Cart(); cart.AddItem(new Furniture(), 1); // Организация — создание контроллера CartController controller = new CartController(null); // Организация — добавление ошибки в модель controller.ModelState.AddModelError("error", "error"); // Действие - попытка перехода к оплате ViewResult result = controller.Checkout(cart, new ShippingDetails()); // Утверждение - проверка, что метод вернул стандартное представление Assert.AreEqual("", result.ViewName); // Утверждение - проверка, что-представлению передана неверная модель Assert.AreEqual(false, result.ViewData.ModelState.IsValid); }
public void Adding_Goods_To_Cart_Goes_To_Cart_Screen() { // Организация - создание имитированного хранилища Mock<IFurnitureRepository> mock = new Mock<IFurnitureRepository>(); mock.Setup(m => m.Furnitures).Returns(new List<Furniture> { new Furniture { Id = 1, Name = "Мебель1", Description = "Описание", Section = "Раздел", Price = 100 }, }.AsQueryable()); // Организация - создание корзины Cart cart = new Cart(); // Организация - создание контроллера CartController controller = new CartController(mock.Object); // Действие - добавить товар в корзину RedirectToRouteResult result = controller.AddToCart(cart, 2, "myUrl"); // Утверждение Assert.AreEqual(result.RouteValues["action"], "Index"); Assert.AreEqual(result.RouteValues["returnUrl"], "myUrl"); }
public void Valid_Order_Goes_To_Submitter_And_Displays_Completed_View() { // Arrange var mockSubmitter = new Moq.Mock<IOrderSubmitter>(); CartController controller = new CartController(null, mockSubmitter.Object); 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 } }; // Act var result = controller.CheckOut(cart, formData); // Assert Assert.AreEqual("Completed", result.ViewName); mockSubmitter.Verify(x => x.SubmitOrder(cart)); Assert.AreEqual(0, cart.Lines.Count); }
public void Submitting_Order_With_No_Lines_Displays_Default_View_With_Error() { // Arrange CartController controller = new CartController(null, null); Cart cart = new Cart(); // Act var result = controller.CheckOut(cart, new FormCollection()); // Assert Assert.IsEmpty(result.ViewName); Assert.IsFalse(result.ViewData.ModelState.IsValid); }
public void Can_Add_To_Cart() { // Организация - создание имитированного хранилища Mock<IFurnitureRepository> mock = new Mock<IFurnitureRepository>(); mock.Setup(m => m.Furnitures).Returns(new List<Furniture> { new Furniture { Id = 1, Name = "Мебель1", Description = "Описание", Section = "Раздел", Price = 100 }, }.AsQueryable()); // Организация - создание корзины Cart cart = new Cart(); // Организация - создание контроллера CartController controller = new CartController(mock.Object); // Действие - добавить игру в корзину controller.AddToCart(cart, 1, null); // Утверждение Assert.AreEqual(cart.Lines.Count(), 1); Assert.AreEqual(cart.Lines.ToList()[0].Furniture.Id, 1); }
public void Can_View_Cart_Contents() { // Организация - создание корзины Cart cart = new Cart(); // Организация - создание контроллера CartController target = new CartController(null); // Действие - вызов метода действия Index() CartIndexViewModel result = (CartIndexViewModel)target.Index(cart, "myUrl").ViewData.Model; // Утверждение Assert.AreSame(result.Cart, cart); Assert.AreEqual(result.ReturnUrl, "myUrl"); }
public void Can_Checkout_And_Submit_Order() { // Организация — создание корзины с элементом Cart cart = new Cart(); cart.AddItem(new Furniture(), 1); // Организация — создание контроллера CartController controller = new CartController(null); // Действие - попытка перехода к оплате ViewResult result = controller.Checkout(cart, new ShippingDetails()); // Утверждение - проверка, что метод возвращает представление Assert.AreEqual("OrderCompleted", result.ViewName); // Утверждение - проверка, что представлению передается допустимая модель Assert.AreEqual(true, result.ViewData.ModelState.IsValid); }
public void Submitting_Empty_Shipping_Details_Displays_Default_View_With_Error() { // Arrange CartController controller = new CartController(null, null); Cart cart = new Cart(); cart.AddItem(new Product(), 1); // Act var result = controller.CheckOut(cart, new FormCollection { { "Name", "" } }); // Assert Assert.IsEmpty(result.ViewName); Assert.IsFalse(result.ViewData.ModelState.IsValid); }
public void Can_Checkout_And_Submit_Order() { var mock = new Mock<IOrderProcessor>(); var cart = new Cart(); cart.AddItem(new Product(), 1); var target = new CartController(null, mock.Object); ViewResult result = target.Checkout(cart, new ShippingDetails()); mock.Verify(m => m.ProcessOrder(It.IsAny<Cart>(), It.IsAny<ShippingDetails>()), Times.Once()); Assert.AreEqual("Completed", result.ViewName); Assert.AreEqual(true, result.ViewData.ModelState.IsValid); }