public ActionResult Create(Product product) { if (ModelState.IsValid) { productService.AddProduct(product); return RedirectToAction("Index"); } return View(product); }
//public ProductService() //{ // this._unitOfWork = new UnitOfWork(); //} public void AddProduct(Product product) { _unitOfWork.ProductRepository.Add(product); _unitOfWork.Save(); }
public void UpdateProduct(Product product) { _unitOfWork.ProductRepository.Edit(product); _unitOfWork.Save(); }
public void Can_Update_Product_Service() { //Arrange List<Product> products = new List<Product>() { new Product(){Description="P1",ProductId=1,ProductName="p1Name"}, new Product(){Description="P2",ProductId=2,ProductName="p2Name"}, new Product(){Description="P3",ProductId=3,ProductName="p3Name"}, new Product(){Description="P4",ProductId=4,ProductName="p4Name"}, new Product(){Description="P5",ProductId=5,ProductName="p5Name"}, new Product(){Description="P6",ProductId=6,ProductName="p6Name"}, }; Mock<IGenericRepository<Product>> mock1 = new Mock<IGenericRepository<Product>>(); //Here we are going to mock repository Edit method mock1.Setup(m => m.Edit(It.IsAny<Product>())).Returns((Product target) => { var original = products.FirstOrDefault( q => q.ProductId == target.ProductId); if (original == null) { return false; } original.ProductName = target.ProductName; original.Description = target.Description; return true; }); //Now we have our repository ready for property injection //Here we are going to mock our IUnitOfWork Mock<IUnitOfWork> mock = new Mock<IUnitOfWork>(); //Here we are going to inject our repository to the property mock.Setup(m => m.ProductRepository).Returns(mock1.Object); //Now our UnitOfWork is ready to be injected to the service //Here we inject UnitOfWork to constractor of our service ProductService productService = new ProductService(mock.Object); //Act var updatedProduct = new Product() {ProductId = 1, ProductName = "p1NameModified", Description = "p1Modified"}; productService.UpdateProduct(updatedProduct); var actualProduct = products.FirstOrDefault(t => t.ProductId == 1); //Assert Assert.AreEqual(actualProduct.ProductName ,updatedProduct.ProductName); Assert.AreEqual(actualProduct.Description, updatedProduct.Description); }