public ActionResult Save(CreateAdvertisementView newAdvertisement) { log.Debug("Run Save(Advertisement newAdvertisement)"); if (ValidateNewAdvertisement(newAdvertisement)) { repository.CreateAdvertisement(new Advertisement(newAdvertisement.Name, newAdvertisement.Description, Int32.Parse(newAdvertisement.Price), DateTime.Now, new Contacts(newAdvertisement.Contacts))); return RedirectToAction("List", "Advertisements"); } else { return View("Create", newAdvertisement); } }
private bool ValidateNewAdvertisement(CreateAdvertisementView newAdvertisement) { bool newAdvertisementValid = true; newAdvertisementValid &= CheckRuleAndSetErrMessage(() => !String.IsNullOrWhiteSpace(newAdvertisement.Name), "Name", "Ведите заголовок объявления."); newAdvertisementValid &= CheckRuleAndSetErrMessage(() => !String.IsNullOrWhiteSpace(newAdvertisement.Description), "Description", "Ведите описание объявления."); long price = 0; bool priceIsNumber = CheckRuleAndSetErrMessage(() => long.TryParse(newAdvertisement.Price, out price), "Price", "Цена задаётся неотрицательным числом."); newAdvertisementValid &= priceIsNumber; if (priceIsNumber) { newAdvertisementValid &= CheckRuleAndSetErrMessage(() => price >= 0, "Price", "Цена должна быть неотрицательна."); var maxPrice = Int32.MaxValue; newAdvertisementValid &= CheckRuleAndSetErrMessage(() => price < maxPrice, "Price", String.Format("Система не может обработать цены выше {0}", maxPrice)); } newAdvertisementValid &= CheckRuleAndSetErrMessage(() => !String.IsNullOrWhiteSpace(newAdvertisement.Contacts), "Contacts", "Укажите способ забрать товар или связаться с вами."); return newAdvertisementValid; }
public void Save_SetValidAdv_ItsOkReturnListAdv() { var controller = new AdvertisementsController(); var advertisementView = new CreateAdvertisementView() { Contacts = "т. 5745773", Description = "Пример", Name = "Пример", Price = "1000" }; var result = controller.Save(advertisementView); Assert.IsInstanceOf<RedirectToRouteResult>(result); Assert.IsTrue((result as RedirectToRouteResult).RouteValues.TryGetValue("action", "List"), "Контроллер должен быть Advertisements"); Assert.IsTrue((result as RedirectToRouteResult).RouteValues.TryGetValue("action", "List"), "Действие должно быть List"); }
public void Save_SetFailAdv_ItsOkReturnCreatePage() { var controller = new AdvertisementsController(); var advertisementView = new CreateAdvertisementView(); advertisementView.Price = "-1"; var result = controller.Save(advertisementView); Assert.IsInstanceOf<CreateAdvertisementView>((result as ViewResult).Model); }