public void CannotCheckoutInvalidShippingDetails() { // Arrange - create a mock order processor var mock = new Mock<IOrderProcessor>(); // Arrange - create a cart with an item var cart = new Cart(); cart.AddItem(new Product(), 1); // Arrange - create an instance of the controller var controller = new CartController(null, null); // Arrange - add an error to the model controller.ModelState.AddModelError("error", "error"); // Action - try to checkout ViewResult result = controller.Checkout(cart, new ShippingDetails()); // Assert - check that the order hasn't been passed on to the processor mock.Verify(m => m.CreateOrder(It.IsAny<Order>()), Times.Never()); // Assert - check that the method is returning the default view Assert.AreEqual("", result.ViewName); // Assert - check that we are passing an invalid model to the view Assert.AreEqual(false, result.ViewData.ModelState.IsValid); }
public void CanCheckoutAndSubmitOrder() { // Arrange - create a mock order processor var mockRepository = new Mock<IProductRepository>(); var what = new Mock<ICartApplicationService>(); // Arrange - create a cart with an item var cart = new Cart(); var shippingDetails = new ShippingDetails { Name = "Jason", Line1 = "123 Fake", City = "Corpus Christi", State = "Texas", Zip = "78414", Country = "United States", GiftWrap = false }; cart.AddItem(new Product {ProductId = 1, Name = "P1", Price = 100M, EstablishmentId = 1, CategoryId = 1, Description = "none"}, 1); // Arrange - create an instance of the controller var controller = new CartController(mockRepository.Object, what.Object); // Action - try to checkout var result = controller.Checkout(cart, shippingDetails); // Assert - check that the order has been passed on to the processor what.Verify(m => m.Process(It.IsAny<Cart>(), It.IsAny<ShippingDetails>()), Times.Once()); // Assert - check that the method is returning the Completed view Assert.AreEqual("Completed", result.ViewName); // Assert - check that we are passing a valid model to the view Assert.AreEqual(true, result.ViewData.ModelState.IsValid); }
public void CannotCheckoutEmptyCart() { // Arrange - create a mock order processor var mock = new Mock<IOrderProcessor>(); // Arrange - create an empty cart var cart = new Cart(); // Arrange - create shipping details var shippingDetails = new ShippingDetails(); // Arrange - create an instance of the controller var controller = new CartController(null, null); // Action ViewResult result = controller.Checkout(cart, shippingDetails); // Assert - check that the order hasn't been passed on to the processor mock.Verify(m => m.CreateOrder(It.IsAny<Order>()), Times.Never()); // Assert - check that the method is returning the default view Assert.AreEqual("", result.ViewName); // Assert - check that we are passing an invalid model to the view Assert.AreEqual(false, result.ViewData.ModelState.IsValid); }