public void AddCommentSavesCommentToPostRepositoryAndRedirects()
        {
            var postUrl = new PostUrlViewModel {
                Year = 2013, Month = 4, UrlTitle = "a-test"
            };
            var returnedPost = new Post();

            Mock.Get(repository).Setup(r => r.SinglePost(postUrl.Url)).Returns(returnedPost);

            var model = new PostViewModel
            {
                CommenterName    = "George",
                CommenterEmail   = "*****@*****.**",
                CommenterWebsite = "vandelay.com",
                Comment          = "A comment"
            };

            var result = controller.AddComment(postUrl, model) as RedirectToRouteResult;

            Assert.That(returnedPost.Comments,
                        Has.Exactly(1).Matches <Comment>(c => c.Text == model.Comment &&
                                                         c.Name == model.CommenterName &&
                                                         c.Email == model.CommenterEmail &&
                                                         c.Website == model.CommenterWebsite));
            Assert.NotNull(result);
            Assert.That(result.RouteValues["action"], Is.EqualTo("Single"));
            Mock.Get(repository).Verify(r => r.Save(returnedPost));
        }
示例#2
0
        public void Given_inValid_AddCommentViewModel_When_AddComent_Returns_SinglePost()
        {
            //Given
            var model = new AddCommentViewModel();

            _postController.ModelState.AddModelError(string.Empty, "There is an error with your model, boy!");
            //When
            var result = _postController.AddComment(model) as RedirectToRouteResult;

            //Then
            Assert.NotNull(result);
            Assert.AreEqual("Post", result.RouteValues["controller"].ToString());
            Assert.AreEqual("SinglePost", result.RouteValues["action"].ToString());
        }