public void CanEditProduct() { // Arrange var products = new List<Product>(); products.Add(new Product {ProductID=41, ProductName="Visual Studio"}); var suppliers = new List<Supplier>(); suppliers.Add(new Supplier{ CompanyName="Microsoft"}); var categories = new List<Category>(); categories.Add(new Category { CategoryName="Tools" }); var repository = new Mock<NorthwindRepository>(); repository.Setup(r => r.Products).Returns(products.AsQueryable()); repository.Setup(r => r.Suppliers).Returns(suppliers.AsQueryable()); repository.Setup(r => r.Categories).Returns(categories.AsQueryable()); // Act var controller = new ProductsController(repository.Object); var result = controller.Edit(41) as ViewResult; // Assert var viewData = result.ViewData; var model = viewData.Model as Product; Assert.IsNotNull(viewData["CategoryID"]); Assert.IsNotNull(viewData["SupplierID"]); Assert.AreEqual(41, model.ProductID); }
public void CanUpdateProduct() { // Arrange var products = new List<Product>(); products.Add(new Product { ProductID = 321, ProductName = "Hello Kitty Phone" }); products[0].Category = new Category { CategoryName="Macho Stuff" }; var repository = new Mock<NorthwindRepository>(); repository.Setup(r => r.Products).Returns(products.AsQueryable()); repository.Setup(r => r.SubmitChanges()).AtMostOnce(); var formVars = new NameValueCollection(); formVars.Add("ProductName", "Megawatt Power Tools"); var context = new Mock<HttpContextBase>(); context.Setup(c => c.Request.Form).Returns(formVars); // Act var controller = new ProductsController(repository.Object); controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller); var result = controller.Edit(321, new FormCollection()) as RedirectToRouteResult; // Assert Assert.IsNotNull(result, "Expected the result to be a redirect"); Assert.AreEqual("List", result.RouteValues["action"]); Assert.AreEqual("Macho Stuff", result.RouteValues["id"].ToString()); }