/// <summary> /// Этот простой метод ищет стиль с идентификатором, /// соответствующим значению параметра paragraphId, и передает его как объект модели представления методу View(). /// </summary> /// <param name="paragraphId"></param> /// <returns></returns> public ViewResult Edit(int paragraphId) { StyleP style = styleRepository.Styles .FirstOrDefault(s => s.ParagraphID == paragraphId); return(View(style)); }
public void Cannot_Edit_Nonexistent_Style() { // Организация - создание имитированного хранилища данных Mock <IStyleRepository> mock = new Mock <IStyleRepository>(); mock.Setup(m => m.Styles).Returns(new List <StyleP> { new StyleP { ParagraphID = 1, Name = "Параграф 1" }, new StyleP { ParagraphID = 2, Name = "Параграф 2" }, new StyleP { ParagraphID = 3, Name = "Параграф 3" }, new StyleP { ParagraphID = 4, Name = "Параграф 4" }, new StyleP { ParagraphID = 5, Name = "Параграф 5" } }); // Организация - создание контроллера AdminController controller = new AdminController(mock.Object); // Действие StyleP result = controller.Edit(6).ViewData.Model as StyleP; // Assert }
public void Cannot_Save_Invalid_Changes() { // Организация - создание имитированного хранилища данных Mock <IStyleRepository> mock = new Mock <IStyleRepository>(); // Организация - создание контроллера AdminController controller = new AdminController(mock.Object); // Организация - создание объекта Game StyleP game = new StyleP { Name = "Test" }; // Организация - добавление ошибки в состояние модели controller.ModelState.AddModelError("error", "error"); // Действие - попытка сохранения товара ActionResult result = controller.Edit(game); // Утверждение - проверка того, что обращение к хранилищу НЕ производится mock.Verify(m => m.SaveStyleParagraph(It.IsAny <StyleP>()), Times.Never()); // Утверждение - проверка типа результата метода Assert.IsInstanceOfType(result, typeof(ViewResult)); }
/// <summary> /// Удаление из БД (админ) /// </summary> /// <param name="paragraphID"></param> /// <returns></returns> public StyleP DeleteStyleParagraph(int paragraphID) { StyleP dbEntry = context.Style.Find(paragraphID); if (dbEntry != null) { context.Style.Remove(dbEntry); context.SaveChanges(); } return(dbEntry); }
public ActionResult Delete(int paragraphID) { StyleP deletedGame = styleRepository.DeleteStyleParagraph(paragraphID); if (deletedGame != null) { TempData["message"] = string.Format("Стиль \"{0}\" абзаца был удалён", deletedGame.Name); } return(RedirectToAction("IndexStyle")); }
public ActionResult Edit(StyleP style) { if (ModelState.IsValid) { styleRepository.SaveStyleParagraph(style); // После записи изменений в хранилище мы сохраняем сообщение с применением средства TempData. // Объект TempData - это словарь пар "ключ/значение", похожий на используемые ранее данные сеанса и ViewBag. // Основное его отличие от данных сеанса состоит в том, что в конце HTTP-запроса объект TempData удаляется. TempData["message"] = string.Format("Изменения в стиле абзаца \"{0}\" были сохранены", style.Name); return(RedirectToAction("IndexStyle")); } else { return(View(style)); } }
public void Can_Delete_Valid_Games() { // Организация - создание объекта Game StyleP game = new StyleP { ParagraphID = 2, Name = "Абзац 1" }; // Организация - создание имитированного хранилища данных Mock <IStyleRepository> mock = new Mock <IStyleRepository>(); mock.Setup(m => m.Styles).Returns(new List <StyleP> { new StyleP { ParagraphID = 1, Name = "Абзац 1" }, new StyleP { ParagraphID = 2, Name = "Абзац 2" }, new StyleP { ParagraphID = 3, Name = "Абзац 3" }, new StyleP { ParagraphID = 4, Name = "Абзац 4" }, new StyleP { ParagraphID = 5, Name = "Абзац 5" } }); // Организация - создание контроллера AdminController controller = new AdminController(mock.Object); // Действие - удаление игры controller.Delete(game.ParagraphID); // Утверждение - проверка того, что метод удаления в хранилище // вызывается для корректного объекта Style mock.Verify(m => m.DeleteStyleParagraph(game.ParagraphID)); }
public void Can_Save_Valid_Changes() { // Организация - создание имитированного хранилища данных Mock <IStyleRepository> mock = new Mock <IStyleRepository>(); // Организация - создание контроллера AdminController controller = new AdminController(mock.Object); // Организация - создание объекта Game StyleP game = new StyleP { Name = "Test" }; // Действие - попытка сохранения товара ActionResult result = controller.Edit(game); // Утверждение - проверка того, что к хранилищу производится обращение mock.Verify(m => m.SaveStyleParagraph(game)); // Утверждение - проверка типа результата метода Assert.IsNotInstanceOfType(result, typeof(ViewResult)); }
public void Can_Edit_Style() { // Организация - создание имитированного хранилища данных Mock <IStyleRepository> mock = new Mock <IStyleRepository>(); mock.Setup(m => m.Styles).Returns(new List <StyleP> { new StyleP { ParagraphID = 1, Name = "Параграф 1" }, new StyleP { ParagraphID = 2, Name = "Параграф 2" }, new StyleP { ParagraphID = 3, Name = "Параграф 3" }, new StyleP { ParagraphID = 4, Name = "Параграф 4" }, new StyleP { ParagraphID = 5, Name = "Параграф 5" } }); // Организация - создание контроллера AdminController controller = new AdminController(mock.Object); // Действие StyleP game1 = controller.Edit(1).ViewData.Model as StyleP; StyleP game2 = controller.Edit(2).ViewData.Model as StyleP; StyleP game3 = controller.Edit(3).ViewData.Model as StyleP; // Assert Assert.AreEqual(1, game1.ParagraphID); Assert.AreEqual(2, game2.ParagraphID); Assert.AreEqual(3, game3.ParagraphID); }
/// <summary> /// Запись в БД (админ) /// </summary> /// <param name="style"></param> public void SaveStyleParagraph(StyleP style) { if (style.ParagraphID == 0) { context.Style.Add(style); } else { StyleP dbEntry = context.Style.Find(style.ParagraphID); if (dbEntry != null) { dbEntry.Name = style.Name; dbEntry.Font = style.Font; dbEntry.Size = style.Size; dbEntry.Color = style.Color; dbEntry.Inscription = style.Inscription; dbEntry.Alignment = style.Alignment; dbEntry.LeftIndention = style.LeftIndention; dbEntry.RightIndention = style.RightIndention; //dbEntry.Interval = style.Interval; } } context.SaveChanges(); }