public ProductBuildingContext( ProductViewData productViewData, ModelStateDictionary modelStateDictionary, HttpRequestBase httpRequestBase) { if (productViewData == null) { throw new ArgumentNullException("productViewData"); } if (modelStateDictionary == null) { throw new ArgumentNullException("modelStateDictionary"); } if (httpRequestBase == null) { throw new ArgumentNullException("httpRequestBase"); } ProductViewData = productViewData; ModelStateDictionary = modelStateDictionary; HttpRequestBase = httpRequestBase; }
public Product ProductFromProductViewData( ProductViewData productViewData, ModelStateDictionary modelStateDictionary, HttpRequestBase httpRequestBase) { if (productViewData == null) { throw new ArgumentNullException("productViewData"); } if (modelStateDictionary == null) { throw new ArgumentNullException("modelStateDictionary"); } var context = new ProductBuildingContext(productViewData, modelStateDictionary, httpRequestBase); foreach (var contributor in contributors.OrderBy(x => x.Order)) { if(!context.ModelStateDictionary.IsValid) continue; contributor.ContributeTo(context); } return context.Product; }
public void NewWithPost_ShouldRenderViewWhenThereAreBindingErrors() { productController.ModelState.AddModelError("foo", "bar"); var product = new Product(); var productViewData = new ProductViewData(); productBuilder.Stub( x => x.ProductFromProductViewData(productViewData, productController.ModelState, productController.Request)) .Return(product); productController.New(productViewData) .ReturnsViewResult() .ForView("Edit") .WithModel<ProductViewData>(); }
public void NewWithPost_ShouldInsertNewProduct() { var product = new Product { Id = 5}; var productViewData = new ProductViewData(); productBuilder.Stub( x => x.ProductFromProductViewData(productViewData, productController.ModelState, productController.Request)) .Return(product); productController.New(productViewData) .ReturnsRedirectToRouteResult() .ToAction("Edit") .WithRouteValue("id", "5"); productRepository.AssertWasCalled(x => x.SaveOrUpdate(product)); }
public void EditWithPost_ShouldRenderViewWhenBindingFails() { productController.ModelState.AddModelError("foo", "bar"); var product = new Product(); var productViewData = new ProductViewData(); productBuilder.Stub( x => x.ProductFromProductViewData(productViewData, productController.ModelState, productController.Request)) .Return(product); productController.Edit(productViewData) .ReturnsViewResult() .ForView("Edit") .WithModel<ProductViewData>() .AssertAreSame(productViewData, x => x); }
public void EditWithPost_ShouldRedirectOnSucessfulBinding() { var product = new Product { Id = 5}; var productViewData = new ProductViewData(); productBuilder.Stub( x => x.ProductFromProductViewData(productViewData, productController.ModelState, productController.Request)) .Return(product); productController.Edit(productViewData) .ReturnsRedirectToRouteResult() .ToAction("Edit") .WithRouteValue("id", "5"); }
public ActionResult Edit(ProductViewData productViewData) { var product = productBuilder.ProductFromProductViewData(productViewData, ModelState, Request); if (ModelState.IsValid) { return this.RedirectToAction(x => x.Edit(product.Id)); } return View("Edit", productViewData.WithErrorMessage("There were errors, please correct them and resubmit.")); }
public ActionResult New(ProductViewData productViewData) { var product = productBuilder.ProductFromProductViewData(productViewData, ModelState, Request); if (ModelState.IsValid) { productRepository.SaveOrUpdate(product); uow.Commit(); //Need explicit commit in order to get the product id. return this.RedirectToAction(x => x.Edit(product.Id)); } return View("Edit", productViewData.WithErrorMessage("There were errors, please correct them and resubmit.")); }
public void SetUp() { productViewData = new ProductViewData(); modelStateDictionary = new ModelStateDictionary(); }