9.3.5 Completing the Cart Controller; UNIT TEST: ORDER PROCESSING
This commit is contained in:
parent
23f23641e5
commit
6838555dd2
@ -137,7 +137,7 @@ namespace SportsStore.UnitTests
|
||||
Cart cart = new Cart();
|
||||
|
||||
// Arrange - create the controller
|
||||
CartController target = new CartController(mock.Object);
|
||||
CartController target = new CartController(mock.Object, null);
|
||||
|
||||
// Act - add a product to the cart
|
||||
target.AddToCart(cart, 1, null);
|
||||
@ -161,7 +161,7 @@ namespace SportsStore.UnitTests
|
||||
Cart cart = new Cart();
|
||||
|
||||
// Arrange - create the controller
|
||||
CartController target = new CartController(mock.Object);
|
||||
CartController target = new CartController(mock.Object, null);
|
||||
|
||||
// Act - add a product to the
|
||||
RedirectToRouteResult result = target.AddToCart(cart, 2, "myUrl");
|
||||
@ -178,7 +178,7 @@ namespace SportsStore.UnitTests
|
||||
Cart cart = new Cart();
|
||||
|
||||
// Arrange - create the controller
|
||||
CartController target = new CartController(null);
|
||||
CartController target = new CartController(null, null);
|
||||
|
||||
// Act - call the Index action methdo
|
||||
CartIndexViewModel result = (CartIndexViewModel)target.Index(cart, "myUrl").ViewData.Model;
|
||||
@ -187,5 +187,85 @@ namespace SportsStore.UnitTests
|
||||
Assert.AreSame(result.Cart, cart);
|
||||
Assert.AreEqual(result.ReturnUrl, "myUrl");
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Cannot_Checkout_Empty_Cart()
|
||||
{
|
||||
// Arrange - create a mock order processor
|
||||
Mock<IOrderProcessor> mock = new Mock<IOrderProcessor>();
|
||||
// Arrange - create an empty cart
|
||||
Cart cart = new Cart();
|
||||
// Arrange - create shipping details
|
||||
ShippingDetails shippingDetails = new ShippingDetails();
|
||||
// Arrange - create an instance of the controller
|
||||
CartController target = new CartController(null, mock.Object);
|
||||
|
||||
// Act
|
||||
ViewResult result = target.Checkout(cart, shippingDetails);
|
||||
|
||||
// Assert - check that the order hasn't been passed on to the processor
|
||||
mock.Verify(m => m.ProcessOrder(It.IsAny<Cart>(), It.IsAny<ShippingDetails>()), Times.Never());
|
||||
|
||||
// Assert - check that method is returning the default view
|
||||
Assert.AreEqual("", result.ViewName);
|
||||
// Assert - check that I am passing an invalid model to the view
|
||||
Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Cannot_Checkout_Invalid_ShippingDetails()
|
||||
{
|
||||
|
||||
// Arrange - create a mock order processor
|
||||
Mock<IOrderProcessor> mock = new Mock<IOrderProcessor>();
|
||||
|
||||
// Arrange - create a cart with an item
|
||||
Cart cart = new Cart();
|
||||
cart.AddItem(new Product(), 1);
|
||||
|
||||
// Arrange - create an instance of the controller
|
||||
CartController target = new CartController(null, mock.Object);
|
||||
// use null to inject repo, as we don't need it
|
||||
|
||||
// Arrange - add an error to the model
|
||||
target.ModelState.AddModelError("error", "error");
|
||||
|
||||
// Act - try to checkout
|
||||
ViewResult result = target.Checkout(cart, new ShippingDetails());
|
||||
|
||||
// Assert - check that the order hasn't been passed on to the processor
|
||||
mock.Verify(m => m.ProcessOrder(It.IsAny<Cart>(), It.IsAny<ShippingDetails>()),
|
||||
Times.Never());
|
||||
// Assert - check that the method is returning the default view
|
||||
Assert.AreEqual("", result.ViewName);
|
||||
// Assert - check that I am passing an invalid model to the view
|
||||
Assert.AreEqual(false, result.ViewData.ModelState.IsValid);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Can_Checkout_And_Submit_Order()
|
||||
{
|
||||
|
||||
// Arrange - create a mock order processor
|
||||
Mock<IOrderProcessor> mock = new Mock<IOrderProcessor>();
|
||||
|
||||
// Arrange - create a cart with an item
|
||||
Cart cart = new Cart();
|
||||
cart.AddItem(new Product(), 1);
|
||||
|
||||
// Arrange - create an instance of the controller
|
||||
CartController target = new CartController(null, mock.Object);
|
||||
|
||||
// Act - try to checkout
|
||||
ViewResult result = target.Checkout(cart, new ShippingDetails());
|
||||
|
||||
// Assert - check that the order has been passed on to the processor
|
||||
mock.Verify(m => m.ProcessOrder(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 I am passing a valid model to the view
|
||||
Assert.AreEqual(true, result.ViewData.ModelState.IsValid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user