public void TestPost_InvalidProduct() { var cart = new ShoppingCart() { ProductId = -1, Quantity = 1, UserId = 1 }; var mockRepo = new Mock <IShoppingCartRepository>(); mockRepo.Setup(r => r.Insert(cart)).Returns(false); var controller = new ShoppingCartsController(mockRepo.Object, mockCache); var result = controller.Post(cart); var okResult = Assert.IsType <NotFoundResult>(result); }
public void TestPost_InvalidQuantity() { var cart = new ShoppingCart() { ProductId = 1, Quantity = -1, UserId = 1 }; var mockRepo = new Mock <IShoppingCartRepository>(); mockRepo.Setup(r => r.Insert(cart)).Returns(true); //This should not be called, however the database does not have any quantity validations so, it would, actually save it. var controller = new ShoppingCartsController(mockRepo.Object, mockCache); controller.ModelState.AddModelError("Quantity", "Quantity must be larger than 0"); //ModelState error are added when building the request. Calling the method directly does not allow the modelstate to build up its errors. var result = controller.Post(cart); var okResult = Assert.IsType <NotFoundResult>(result); }
public void TestPost_Valid() { var cart = new ShoppingCart() { ProductId = 1, Quantity = 1, UserId = 1 }; var mockRepo = new Mock <IShoppingCartRepository>(); mockRepo.Setup(r => r.Insert(cart)).Returns(true); var controller = new ShoppingCartsController(mockRepo.Object, mockCache); var result = controller.Post(cart); var okResult = Assert.IsType <CreatedResult>(result); var resultObject = (ShoppingCart)okResult.Value; Assert.Equal(resultObject.ProductId, cart.ProductId); Assert.Equal(resultObject.Quantity, cart.Quantity); Assert.Equal(resultObject.UserId, cart.UserId); }