Ejemplo n.º 1
0
        public async Task <IActionResult> PostComment(ColumnRespondViewModel viewModel)
        {
            await googleRecaptchaHelper.VerifyRecaptcha(Request, ModelState);

            var articleExists = columnRepo.ColumnPosts.Any(p => p.Id == viewModel.ColumnId);

            if (articleExists == false)
            {
                return(RedirectToAction("Column", "Error"));
            }

            if (ModelState.IsValid)
            {
                viewModel.Comment.DatePosted = DateTime.Now;

                if (string.IsNullOrEmpty(viewModel.Comment.Username))
                {
                    viewModel.Comment.Username = "******";
                }

                viewModel.Comment.Text = viewModel.Comment.Text.Trim();

                columnRepo.AddCommentToColumn(viewModel.Comment, viewModel.ColumnId);

                return(RedirectToAction("ColumnPost", "Column", new { id = viewModel.ColumnId }));
            }

            ViewBag.CommentPosted = true;

            return(ColumnPost(viewModel.ColumnId));
        }
Ejemplo n.º 2
0
        async void PostComment_InvalidModel_DisplaysColumnPost(string commentText, string commentUsername)
        {
            var articlesRepoMock = new Mock <IColumnRepository>();

            articlesRepoMock.Setup(x => x.ColumnPosts).Returns(new ColumnPost[] { new ColumnPost {
                                                                                      Id = 1
                                                                                  } }.AsQueryable);
            var columnController = new ColumnController(articlesRepoMock.Object, new RecaptchaMock());
            var viewModel        = new ColumnRespondViewModel
            {
                ColumnId = 1,
                Comment  = new Comment
                {
                    Text     = commentText,
                    Username = commentUsername
                }
            };

            TestHelper.SimulateValidation(columnController, viewModel);
            TestHelper.SimulateValidation(columnController, viewModel.Comment);
            var result = (ViewResult)await columnController.PostComment(viewModel);

            Assert.Equal("ColumnPost", result.ViewName);
            articlesRepoMock.Verify(x => x.AddCommentToColumn(viewModel.Comment, viewModel.ColumnId), Times.Never);
        }
Ejemplo n.º 3
0
        async void PostComment_TrimsText()
        {
            var columnRepoMock = new Mock <IColumnRepository>();

            columnRepoMock.Setup(x => x.ColumnPosts).Returns(new ColumnPost[] { new ColumnPost {
                                                                                    Id = 1
                                                                                } }.AsQueryable);
            var columnController = new ColumnController(columnRepoMock.Object, new RecaptchaMock());
            var viewModel        = new ColumnRespondViewModel {
                ColumnId = 1, Comment = new Comment {
                    Text = "   test    "
                }
            };

            TestHelper.SimulateValidation(columnController, viewModel);
            var result = (RedirectToActionResult)await columnController.PostComment(viewModel);

            Assert.Equal("test", viewModel.Comment.Text);
        }
Ejemplo n.º 4
0
        async void PostComment_ValidModel_CallsAddCommentToColumn()
        {
            var articlesRepoMock = new Mock <IColumnRepository>();

            articlesRepoMock.Setup(x => x.ColumnPosts).Returns(new ColumnPost[] { new ColumnPost {
                                                                                      Id = 1
                                                                                  } }.AsQueryable);
            var columnController = new ColumnController(articlesRepoMock.Object, new RecaptchaMock());
            var viewModel        = new ColumnRespondViewModel {
                ColumnId = 1, Comment = new Comment {
                    Text = ""
                }
            };

            TestHelper.SimulateValidation(columnController, viewModel);
            var result = (RedirectToActionResult)await columnController.PostComment(viewModel);

            articlesRepoMock.Verify(x => x.AddCommentToColumn(viewModel.Comment, viewModel.ColumnId), Times.Once);
        }
Ejemplo n.º 5
0
        async void PostComment_InvalidColumnId_DisplaysErrorView()
        {
            var columnRepoMock = new Mock <IColumnRepository>();

            columnRepoMock.Setup(x => x.ColumnPosts).Returns(new ColumnPost[] { new ColumnPost {
                                                                                    Id = 1
                                                                                } }.AsQueryable);
            var columnController = new ColumnController(columnRepoMock.Object, Mock.Of <IGoogleRecaptchaHelper>());
            var viewModel        = new ColumnRespondViewModel {
                ColumnId = 2, Comment = new Comment {
                    Text = ""
                }
            };

            TestHelper.SimulateValidation(columnController, viewModel);
            var result = (RedirectToActionResult)await columnController.PostComment(viewModel);

            Assert.Equal("Error", result.ControllerName);
            Assert.Equal("Column", result.ActionName);
        }
Ejemplo n.º 6
0
        async void PostComment_ValidModel_RedirectsToColumnPost()
        {
            var articlesRepoMock = new Mock <IColumnRepository>();

            articlesRepoMock.Setup(x => x.ColumnPosts).Returns(new ColumnPost[] { new ColumnPost {
                                                                                      Id = 1
                                                                                  } }.AsQueryable);
            var columnController = new ColumnController(articlesRepoMock.Object, new RecaptchaMock());
            var viewModel        = new ColumnRespondViewModel {
                ColumnId = 1, Comment = new Comment {
                    Text = ""
                }
            };

            TestHelper.SimulateValidation(columnController, viewModel);
            var result = (RedirectToActionResult)await columnController.PostComment(viewModel);

            Assert.Equal("ColumnPost", result.ActionName);
            Assert.Equal("Column", result.ControllerName);
        }