public void Cannot_Check_Out_If_Shipping_Details_Are_Invalid() { // Arrange: Given a user has a non-empty cart var cart = new Cart(); cart.AddItem(new Product(), 1); // Arrange: ... but the shipping details are invalid var cartController = new CartController(null, null); cartController.ModelState.AddModelError("any key", "any error"); // Act: When the user tries to check out var result = cartController.CheckOut(cart, new ShippingDetails()); // Assert result.ShouldBeDefaultView(); }
public void Can_Check_Out_And_Submit_Order() { var mockOrderSubmitter = new Mock<IOrderSubmitter>(); // Arrange: Given a user has a non-empty cart & no validation errors var cart = new Cart(); cart.AddItem(new Product(), 1); var shippingDetails = new ShippingDetails(); // Act: When the user tries to check out var cartController = new CartController(null, mockOrderSubmitter.Object); var result = cartController.CheckOut(cart, shippingDetails); // Assert: Order goes to the order submitter & user sees "Completed" view mockOrderSubmitter.Verify(x => x.SubmitOrder(cart, shippingDetails)); result.ShouldBeView("Completed"); }