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);
 }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        public void ShouldReturnBookImageFromBook()
        {
            var bookPostInformation =
                new BookPostInformation(1, new BookPost(), new Book {
                CoverImageUrl = "someurl"
            });

            Assert.AreEqual("someurl", bookPostInformation.FeaturedImage);
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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"]);
        }
Beispiel #7
0
        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"]);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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 }));
        }
Beispiel #10
0
        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"]);
        }
Beispiel #11
0
        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 });
 }
Beispiel #13
0
        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 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 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 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 });
 }