public void Create_Action_Redirect_To_Edit_With_New_Product()
        {
            AdminController controller = new AdminController(mockRepository.Object);

            var result = controller.Create();

            Assert.AreEqual("Edit", result.ViewName);
            Assert.IsNotNull(result.ViewData.Model);
        }
        public void Edit_Action_Display_Current_Product()
        {
            AdminController controller = new AdminController(mockRepository.Object);

            ViewResult results = controller.Edit(17);

            Product renderedProduct = (Product)results.ViewData.Model;
            Assert.AreEqual(17, renderedProduct.ProductID);
            Assert.AreEqual("Product 17", renderedProduct.Name);
        }
        public void Edit_Action_Saves_Product_To_Repository_And_Redirects_To_Index()
        {
            AdminController controller = new AdminController(mockRepository.Object);
            Product product = new Product();

            var result = (RedirectToRouteResult)controller.Edit(product, null);

            mockRepository.Verify(x => x.SaveProduct(product));
            Assert.AreEqual("Index", result.RouteValues["action"]);
        }
        public void Delete_Action_Deletes_Product_Then_Redirects_To_Index()
        {
            AdminController controller = new AdminController(mockRepository.Object);
            Product product = mockRepository.Object.Products.First(p => p.ProductID == 24);

            RedirectToRouteResult result = controller.Delete(24);

            Assert.AreEqual("Index", result.RouteValues["action"]);
            Assert.AreEqual("Product 24 has been deleted.", controller.TempData["message"]);
            mockRepository.Verify(x => x.DeleteProduct(product));
        }
        public void Index_Action_Lists_All_Products()
        {
            AdminController controller = new AdminController(mockRepository.Object);

            ViewResult results = controller.Index();

            Assert.IsEmpty(results.ViewName);
            var productsRendered = (List<Product>)results.ViewData.Model;
            Assert.AreEqual(50, productsRendered.Count);
            for (int i = 0; i < 50; i++)
                Assert.AreEqual("Product " + (i + 1), productsRendered[i].Name);
        }