public void Cannot_Save_Invalid_Comment()
        {
            // Организация - создание имитированного хранилища
            Mock<ICommentRepository> mock = new Mock<ICommentRepository>();
            Mock<ILikeRepository> mockLike = new Mock<ILikeRepository>();

            // Организация - создание контроллера
            CommentController target = new CommentController(mock.Object, mockLike.Object);

            // Организация - создание комментария
            Comment comment = new Comment { Id = 1, CreateDate = DateTime.Now, Username = "******", Text = "Test Text", PostId = 1 };

            // Организация - добавление ошибки в состояние модели
            target.ModelState.AddModelError("error", "error");

            // Действие - сохраняем комментарий
            ActionResult result = target.Save(comment);

            // Утверждение - проверка того, что к хранилищу не производится обращение
            mock.Verify(m => m.Save(It.IsAny<Comment>()), Times.Never());

            // Утверждение - проверка типа результата метода
            Assert.IsNotNull(((PartialViewResult)result).Model);
            Assert.IsInstanceOfType(result, typeof(PartialViewResult));
        }
        public void Can_Save_Valid_Comment()
        {
            // Организация - создание имитированного хранилища
            Mock<ICommentRepository> mock = new Mock<ICommentRepository>();
            Mock<ILikeRepository> mockLike = new Mock<ILikeRepository>();
            var context = new Mock<HttpContextBase>();
            var request = new Mock<HttpRequestBase>();
            request.Setup(r => r.UrlReferrer).Returns(new Uri("http://test.com"));
            context.Setup(c => c.Request).Returns(request.Object);

            // Организация - создание контроллера
            CommentController target = new CommentController(mock.Object, mockLike.Object);
            target.ControllerContext = new ControllerContext(context.Object, new System.Web.Routing.RouteData(), target);

            // Организация - создание комментария
            Comment comment = new Comment { Id = 1, CreateDate = DateTime.Now, Username = "******", Text = "Test Text", PostId = 1 };

            // Действие - сохраняем комментарий
            ActionResult result = target.Save(comment);

            // Утверждение - проверка того, что к хранилищу производится обращение
            mock.Verify(m => m.Save(comment));

            // Утверждение - проверка типа результата метода
            Assert.IsNull(((PartialViewResult)result).Model);
            Assert.IsInstanceOfType(result, typeof(PartialViewResult));
        }
        public PartialViewResult Save(Comment model)
        {
            if (ModelState.IsValid)
            {
                _commentRepository.Save(model);
                ViewBag.IsCommentSuccess = true;
                return PartialView("~/Views/Posts/_CommentForm.cshtml");
            }

            return PartialView("~/Views/Posts/_CommentForm.cshtml", model);
        }
        public PartialViewResult SaveWithoutCaptcha(Comment model)
        {
            if (ModelState.IsValid & Session["oAuthUser"] != null)
            {
                model.AvatarUrl = ((OAuthUser)Session["oAuthUser"]).ProfilePhoto;
                _commentRepository.Save(model);
                ViewBag.IsCommentSuccess = true;
                return PartialView("~/Views/Posts/_CommentForm.cshtml");
            }

            return PartialView("~/Views/Posts/_CommentForm.cshtml", model);
        }
        public void Cannot_Save_Invalid_Changes()
        {
            // Организация - создание комментария
            Comment comment = new Comment { Id = 1, Username = "******", Text = "Comment text", CreateDate = DateTime.Now, IsApproved = true, PostId = 1 };

            // Организация - добавление ошибки в состояние модели
            _target.ModelState.AddModelError("error", "error");

            // Действие - попытка сохранения товара
            ActionResult result = _target.Save(comment);

            // Утверждение - проверка того, что обращения к хранилищу не производится
            _mock.Verify(m => m.Save(It.IsAny<Comment>()), Times.Never);

            // Утверждение - проверка типа результата метода
            Assert.IsInstanceOfType(result, typeof(ViewResult));
        }
        public void Save(Comment comment)
        {
            if (comment.Id == 0)
            {
                comment.CreateDate = DateTime.Now;
                _db.Comments.Add(comment);
            }
            else
            {
                Comment dbEntry = _db.Comments.Find(comment.Id);

                if (dbEntry != null)
                {
                    dbEntry.Text = comment.Text;
                    dbEntry.Username = comment.Username;
                    dbEntry.IsApproved = comment.IsApproved;
                }
            }

            _db.SaveChanges();
        }
        public ActionResult Save(Comment comment)
        {
            if (ModelState.IsValid)
            {
                _commentRepository.Save(comment);

                return RedirectToAction("List", new { page = TempData["page"], approved = TempData["approved"] });
            }

            return View(comment);
        }
        public void Can_Save_Valid_Changes()
        {
            // Организация - создание комментария
            Comment comment = new Comment { Id = 1, Username = "******", Text = "Comment text", CreateDate = DateTime.Now, IsApproved = true, PostId = 1 };

            // Действие - попытка сохранения товара
            ActionResult result = _target.Save(comment);

            // Утверждение - проверка того, что к хранилищу производится обращение
            _mock.Verify(m => m.Save(comment));

            // Утверждение - проверка результата метода
            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
        }