public ViewResult Details(int id, int bookId) { var book = Repository.Get<Book>(bookId); var bookPost = book.Posts.First(post => post.Id == id); ViewBag.transformedContent = new Markdown().Transform(bookPost.Content); var bookPostInformation = new BookPostInformation(bookId, bookPost, book); ViewBag.MetaDescription = MarkDownHelper.SummaryForMetaDescription(bookPost.Content, 155); return View(bookPostInformation); }
public void ShouldReturnDescriptionIfItSmallerThanTheSummarySize() { var bookPostInformation = new BookPostInformation(1, new BookPost { Content = "The quick brown fox jumps over the lazy dog." }); Assert.AreEqual("<p>The quick brown fox jumps over the lazy dog.</p>\n", bookPostInformation.Summary(200)); }
public void ShouldReturnBookImageFromBook() { var bookPostInformation = new BookPostInformation(1, new BookPost(), new Book { CoverImageUrl = "someurl" }); Assert.AreEqual("someurl", bookPostInformation.FeaturedImage); }
public void ShouldSummarizeDescription() { var bookPostInformation = new BookPostInformation(1, new BookPost { Content = "__The quick brown fox__ jumps over the lazy dog." }); Assert.AreEqual("<p><strong>The quick brown fox</strong> jumps</p>\n", bookPostInformation.Summary(24)); }
public ViewResult Details(int id, int bookId) { var book = Repository.Get <Book>(bookId); var bookPost = book.Posts.First(post => post.Id == id); ViewBag.transformedContent = new Markdown().Transform(bookPost.Content); var bookPostInformation = new BookPostInformation(bookId, bookPost, book); ViewBag.MetaDescription = MarkDownHelper.SummaryForMetaDescription(bookPost.Content, 155); return(View(bookPostInformation)); }
public void CreateBookPostShouldNotSaveWhenBookPostIsInvalid() { var repository = new Mock<Repository>(); var book = new Book { Id = 1 }; var bookPost = new BookPost { Title = "The Book Post", Content = "some content", Type = BookPost.BookPostType.Reviews }; var submittedBookPostInformation = new BookPostInformation(book.Id, bookPost); repository.Setup(repo => repo.Get<Book>(book.Id)).Returns(book); var bookPostsController = new BookPostsController(repository.Object); bookPostsController.ModelState.AddModelError("test error", "test exception"); var result = (ViewResult)bookPostsController.Create(submittedBookPostInformation); repository.Verify(repo => repo.Edit(book), Times.Never(), "failing model validation should prevent creating book post"); Assert.AreEqual("There were problems saving this book post", bookPostsController.TempData["flashError"]); }
public void ShouldStoreBookPostWhenCreated() { var repository = new Mock <Repository>(); var book = new Book { Id = 1 }; var bookPost = new BookPost { Title = "test title", Content = "some content" }; var submittedBookPostInformation = new BookPostInformation(book.Id, bookPost); repository.Setup(repo => repo.Get <Book>(book.Id)).Returns(book); var controller = new BookPostsController(repository.Object); var result = (RedirectToRouteResult)controller.Create(submittedBookPostInformation); repository.Verify(it => it.Edit(book), Times.Once()); Assert.AreEqual(string.Format("Added {0} successfully", bookPost.Title), controller.TempData["flashSuccess"]); Assert.AreEqual(book.Id, result.RouteValues["id"]); }
public void ShouldSetCreatedAtAndUpdatedAtOnBookPostCreation() { var now = DateTime.Now; var repository = new Mock <Repository>(); var book = new Book { Id = 1 }; var bookPost = new BookPost { Title = "test title", Content = "some content" }; var submittedBookPostInformation = new BookPostInformation(book.Id, bookPost); repository.Setup(repo => repo.Get <Book>(book.Id)).Returns(book); var controller = new BookPostsController(repository.Object); controller.Create(submittedBookPostInformation); Assert.IsTrue(bookPost.CreatedAt >= now); Assert.IsTrue(bookPost.UpdatedAt >= now); }
public ActionResult Edit(BookPostInformation editedBookPostInformation) { if (!ModelState.IsValid) { TempData["flashError"] = "There were problems saving this book post"; return(View(editedBookPostInformation)); } var book = Repository.Get <Book>(editedBookPostInformation.BookId); var editedBookPost = editedBookPostInformation.Model; editedBookPost.UpdatedAt = DateTime.Now; var oldBookPost = book.Posts.First(post => post.Id == editedBookPost.Id); editedBookPost.CreatedAt = oldBookPost.CreatedAt; book.Posts.Remove(oldBookPost); book.Posts.Add(editedBookPost); Repository.Edit(book); TempData["flashSuccess"] = string.Format("Updated {0} successfully", editedBookPost.Title); return(RedirectToAction("Details", new { id = editedBookPost.Id, bookId = book.Id })); }
public void CreateBookPostShouldNotSaveWhenBookPostIsInvalid() { var repository = new Mock <Repository>(); var book = new Book { Id = 1 }; var bookPost = new BookPost { Title = "The Book Post", Content = "some content", Type = BookPost.BookPostType.Reviews }; var submittedBookPostInformation = new BookPostInformation(book.Id, bookPost); repository.Setup(repo => repo.Get <Book>(book.Id)).Returns(book); var bookPostsController = new BookPostsController(repository.Object); bookPostsController.ModelState.AddModelError("test error", "test exception"); var result = (ViewResult)bookPostsController.Create(submittedBookPostInformation); repository.Verify(repo => repo.Edit(book), Times.Never(), "failing model validation should prevent creating book post"); Assert.AreEqual("There were problems saving this book post", bookPostsController.TempData["flashError"]); }
public void ShouldRedirectToDetailsPageWhenBookPostIsCreated() { var repository = new Mock <Repository>(); var book = new Book { Id = 1 }; var bookPost = new BookPost { Title = "The Book Post", Content = "some content", Type = BookPost.BookPostType.Reviews }; var submittedBookPostInformation = new BookPostInformation(book.Id, bookPost); repository.Setup(repo => repo.Get <Book>(book.Id)).Returns(book); var bookPostsController = new BookPostsController(repository.Object); var viewResult = (RedirectToRouteResult)bookPostsController.Create(submittedBookPostInformation); repository.Verify(repo => repo.Edit(book)); Assert.IsNotNull(viewResult); Assert.AreEqual("Added The Book Post successfully", bookPostsController.TempData["flashSuccess"]); Assert.AreEqual(1, viewResult.RouteValues["id"]); Assert.IsTrue(book.Posts.Contains(bookPost)); }
public ActionResult Create(BookPostInformation submittedBookPostInformation) { if (!ModelState.IsValid) { TempData["flashError"] = "There were problems saving this book post"; return View(submittedBookPostInformation); } var book = Repository.Get<Book>(submittedBookPostInformation.BookId); var bookPost = submittedBookPostInformation.Model; bookPost.CreatedAt = bookPost.UpdatedAt = DateTime.Now; if (book.Posts.Any()) { bookPost.Id = book.Posts.Max(post => post.Id) + 1; } else { bookPost.Id = 1; } book.Posts.Add(bookPost); Repository.Edit(book); TempData["flashSuccess"] = string.Format("Added {0} successfully", bookPost.Title); return RedirectToAction("Details", "Books", new { id = book.Id }); }
public ActionResult Create(BookPostInformation submittedBookPostInformation) { if (!ModelState.IsValid) { TempData["flashError"] = "There were problems saving this book post"; return(View(submittedBookPostInformation)); } var book = Repository.Get <Book>(submittedBookPostInformation.BookId); var bookPost = submittedBookPostInformation.Model; bookPost.CreatedAt = bookPost.UpdatedAt = DateTime.Now; if (book.Posts.Any()) { bookPost.Id = book.Posts.Max(post => post.Id) + 1; } else { bookPost.Id = 1; } book.Posts.Add(bookPost); Repository.Edit(book); TempData["flashSuccess"] = string.Format("Added {0} successfully", bookPost.Title); return(RedirectToAction("Details", "Books", new { id = book.Id })); }
public void ShouldReturnBookImageFromBook() { var bookPostInformation = new BookPostInformation(1, new BookPost (), new Book {CoverImageUrl = "someurl"}); Assert.AreEqual("someurl", bookPostInformation.FeaturedImage); }
public void ShouldStoreBookPostWhenCreated() { var repository = new Mock<Repository>(); var book = new Book { Id = 1 }; var bookPost = new BookPost {Title = "test title", Content = "some content"}; var submittedBookPostInformation = new BookPostInformation(book.Id, bookPost); repository.Setup(repo => repo.Get<Book>(book.Id)).Returns(book); var controller = new BookPostsController(repository.Object); var result = (RedirectToRouteResult)controller.Create(submittedBookPostInformation); repository.Verify(it => it.Edit(book), Times.Once()); Assert.AreEqual(string.Format("Added {0} successfully", bookPost.Title), controller.TempData["flashSuccess"]); Assert.AreEqual(book.Id, result.RouteValues["id"]); }
public void ShouldSetCreatedAtAndUpdatedAtOnBookPostCreation() { var now = DateTime.Now; var repository = new Mock<Repository>(); var book = new Book { Id = 1 }; var bookPost = new BookPost { Title = "test title", Content = "some content" }; var submittedBookPostInformation = new BookPostInformation(book.Id, bookPost); repository.Setup(repo => repo.Get<Book>(book.Id)).Returns(book); var controller = new BookPostsController(repository.Object); controller.Create(submittedBookPostInformation); Assert.IsTrue(bookPost.CreatedAt >= now); Assert.IsTrue(bookPost.UpdatedAt >= now); }
public void ShouldRedirectToDetailsPageWhenBookPostIsCreated() { var repository = new Mock<Repository>(); var book = new Book { Id = 1 }; var bookPost = new BookPost { Title = "The Book Post", Content = "some content", Type = BookPost.BookPostType.Reviews }; var submittedBookPostInformation = new BookPostInformation(book.Id, bookPost); repository.Setup(repo => repo.Get<Book>(book.Id)).Returns(book); var bookPostsController = new BookPostsController(repository.Object); var viewResult = (RedirectToRouteResult)bookPostsController.Create(submittedBookPostInformation); repository.Verify(repo => repo.Edit(book)); Assert.IsNotNull(viewResult); Assert.AreEqual("Added The Book Post successfully", bookPostsController.TempData["flashSuccess"]); Assert.AreEqual(1, viewResult.RouteValues["id"]); Assert.IsTrue(book.Posts.Contains(bookPost)); }
public ActionResult Edit(BookPostInformation editedBookPostInformation) { if (!ModelState.IsValid) { TempData["flashError"] = "There were problems saving this book post"; return View(editedBookPostInformation); } var book = Repository.Get<Book>(editedBookPostInformation.BookId); var editedBookPost = editedBookPostInformation.Model; editedBookPost.UpdatedAt = DateTime.Now; var oldBookPost = book.Posts.First(post => post.Id == editedBookPost.Id); editedBookPost.CreatedAt = oldBookPost.CreatedAt; book.Posts.Remove(oldBookPost); book.Posts.Add(editedBookPost); Repository.Edit(book); TempData["flashSuccess"] = string.Format("Updated {0} successfully", editedBookPost.Title); return RedirectToAction("Details", new { id = editedBookPost.Id, bookId = book.Id }); }