Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }