public void PutProductWithNewProductIdResultsInCreate() { var mock = new Mock <IProductCatalog>(); mock.Setup(m => m.FindById(It.Is <string>(s => s == "2"))).Returns(default(Product)); Product newProduct = null; mock.Setup(m => m.AddNewProduct(It.Is <string>(s => s == "2"), It.IsAny <Product>())) .Callback((string i, Product p) => { newProduct = p; }); var controller = new ProductsController(mock.Object) { ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext() } }; var result = controller.Put("2", new WebAPI.Models.Product { Name = "name 2", Price = "10.1" }); var createdAtRouteResult = Assert.IsType <CreatedAtRouteResult>(result); var product = Assert.IsType <WebAPI.Models.Product>(createdAtRouteResult.Value); Assert.Equal("name 2", product.Name); Assert.Equal("10.1", product.Price); Assert.NotNull(newProduct); }
public void PutCreateInvalidOperationResultsInNoContent() { var mock = new Mock <IProductCatalog>(); Product updatedProduct = null; mock.Setup(m => m.FindById(It.Is <string>(s => s == "2"))).Returns(default(Product)); mock.Setup(m => m.AddNewProduct(It.Is <string>(s => s == "2"), It.IsAny <Product>())).Throws <InvalidOperationException>(); mock.Setup(m => m.ReplaceExistingProduct(It.Is <string>(s => s == "2"), It.IsAny <Product>())).Callback((string i, Product p) => { updatedProduct = p; }); var controller = new ProductsController(mock.Object) { ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext() } }; var result = controller.Put("2", new WebAPI.Models.Product { Name = "name 2", Price = "10.1" }); var noContentResult = Assert.IsType <NoContentResult>(result); }
public void PutUpdateProductIdResultsInNoContent() { var mock = new Mock <IProductCatalog>(); mock.Setup(m => m.FindById(It.Is <string>(s => s == "2"))).Returns(new Product("TestName", 10.0m)); Product updatedProduct = null; mock.Setup(m => m.ReplaceExistingProduct(It.Is <string>(s => s == "2"), It.IsAny <Product>())).Callback((string i, Product p) => { updatedProduct = p; }); var controller = new ProductsController(mock.Object); var result = controller.Put("2", new WebAPI.Models.Product { Name = "name 2", Price = "10.1" }); var noContentResult = Assert.IsType <NoContentResult>(result); // todo: validate result content //var product = Assert.IsType<WebAPI.Models.Product>(noContentResult.Value); //Assert.Equal("name 2", product.Name); //Assert.Equal("10.1", product.Price); Assert.NotNull(updatedProduct); }