コード例 #1
0
        public void POST_Edit_should_save_updated_record()
        {
            // Arrange
            Supplier selectedSupplier = new Supplier
            {
                SupplierID = 99,
                CompanyName = "Supplier 99"
            };
            Category selectedCategory = new Category
            {
                CategoryID = 99,
                CategoryName = "Category 99"
            };

            Product dbproduct = new Product
            {
                ProductID = 1,
                ProductName = "Product 1",
                UnitPrice = 10.00M,
                UnitsInStock = 1,
                UnitsOnOrder = 1,
                CategoryID = 1,
                SupplierID = 1,
                Supplier = new Supplier
                {
                    SupplierID = 1,
                    CompanyName = "Supplier 1"
                },
                Category = new Category
                {
                    CategoryID = 1,
                    CategoryName = "Category 1"
                }
            };

            ProductsViewModel productViewModel = new ProductsViewModel
            {
                ID = 1,
                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.Products.GetById(It.IsAny<int>())).Returns(dbproduct);
            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.Update(It.IsAny<Product>()));
            mock.Setup(m => m.SaveChanges());

            ProductController controller = new ProductController(mock.Object);

            //act
            var result = controller.Edit(productViewModel) as ViewResult;
            var viewModel = controller.ViewData.Model as ProductsViewModel;

            // Assert
            // Check that each method was only called once.
            mock.Verify(x => x.Products.Update(It.IsAny<Product>()), Times.Once());
            mock.Verify(x => x.SaveChanges(), Times.Once());
            Assert.AreEqual(dbproduct.ProductID, viewModel.ID);
            Assert.AreEqual(dbproduct.ProductName, viewModel.Name);
            Assert.AreEqual(dbproduct.UnitPrice, viewModel.UnitPrice);
            Assert.AreEqual(dbproduct.UnitsInStock, viewModel.UnitsInStock);
            Assert.AreEqual(dbproduct.UnitsOnOrder, viewModel.UnitsOnOrder);
            Assert.AreEqual(dbproduct.Supplier, selectedSupplier);
            Assert.AreEqual(dbproduct.Category, selectedCategory);
            Assert.AreEqual("", result.ViewName);
        }
コード例 #2
0
        public void Edit_should_allow_edit_for_a_specific_product()
        {
            // Arrange
            Product product = new Product
            {
                ProductID = 1,
                ProductName = "Product 1",
                UnitPrice = 10.00M,
                UnitsInStock = 1,
                UnitsOnOrder = 1,
                CategoryID = 1,
                SupplierID = 1
            };
            mock.Setup(m => m.Products.GetById(It.IsAny<int>())).Returns(product);
            Mock<IProductsViewModel> mockProductViewModel = new Mock<IProductsViewModel>();
            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.Edit(1) as ViewResult;
            var viewModel = controller.ViewData.Model as ProductsViewModel;

            // Assert
            Assert.AreEqual(product.ProductID,viewModel.ID);
            Assert.AreEqual(product.ProductName, viewModel.Name);
            Assert.AreEqual(product.UnitPrice, viewModel.UnitPrice);
            Assert.AreEqual(product.UnitsInStock, viewModel.UnitsInStock);
            Assert.AreEqual(product.UnitsOnOrder, viewModel.UnitsOnOrder);
            Assert.AreEqual(product.CategoryID, viewModel.SelectedCategoryValue);
            Assert.AreEqual(product.SupplierID, viewModel.SelectedSupplierValue);
            Assert.AreEqual("", result.ViewName);
        }