public void POST_Create_should_save_the_record_and_redirect_to_index() { // Arrange Supplier selectedSupplier = new Supplier { SupplierID = 99, CompanyName = "Supplier 99" }; Category selectedCategory = new Category { CategoryID = 99, CategoryName = "Category 99" }; ProductsViewModel productViewModel = new ProductsViewModel { Name = "Product Romeo", UnitPrice = 20.00M, UnitsInStock = 3, UnitsOnOrder = 3, SelectedCategoryValue = 99, SelectedSupplierValue = 99 }; mock.Setup(m => m.Suppliers.GetById(It.IsAny<int>())).Returns(selectedSupplier); mock.Setup(m => m.Categories.GetById(It.IsAny<int>())).Returns(selectedCategory); mock.Setup(m => m.Suppliers.GetAll()).Returns(suppliers.AsQueryable<Supplier>()); mock.Setup(m => m.Categories.GetAll()).Returns(categories.AsQueryable<Category>()); mock.Setup(m => m.Products.Add(It.IsAny<Product>())); mock.Setup(m => m.SaveChanges()); ProductController controller = new ProductController(mock.Object); // Act var result = controller.Create(productViewModel) as RedirectToRouteResult; var viewModel = controller.ViewData.Model as ProductsViewModel; // Assert // Check that each method was only called once. mock.Verify(x => x.Products.Add(It.IsAny<Product>()), Times.Once()); mock.Verify(x => x.SaveChanges(), Times.Once()); //check that redirec to index happened Assert.AreEqual("Index", result.RouteValues["action"]); }
public void GET_Create_should_display_create_view_with_suppliers_and_categories() { // Arrange mock.Setup(m => m.Suppliers.GetAll()).Returns(suppliers.AsQueryable<Supplier>()); mock.Setup(m => m.Categories.GetAll()).Returns(categories.AsQueryable<Category>()); ProductController controller = new ProductController(mock.Object); // Act ViewResult result = controller.Create() as ViewResult; var viewModel = controller.ViewData.Model as ProductsViewModel; // Assert Assert.IsTrue(viewModel.Suppliers.Count() == 2); Assert.IsTrue(viewModel.Categories.Count() == 2); Assert.AreEqual("", result.ViewName); }