public void should_add_comment_to_post()
        {
            var _post = new Post();

            _blogPostCommentService.AddCommentToBlogPost(GivenBody, GivenUserSubscriberd, GivenUser, _post);
            _post.GetComments().ShouldHaveCount(1);
        }
Пример #2
0
        public BlogPostViewModel Comment(BlogPostCommentViewModel inModel)
        {
            var badRedirectResult = new BlogPostViewModel {
                ResultOverride = new RedirectResult(_resolver.PageNotFound())
            };

            // Trying to reduce spam comments
            if (!string.IsNullOrEmpty(inModel.OptionalUrl) && (
                    inModel.OptionalUrl.Contains("geocities.com") ||
                    inModel.OptionalUrl.Contains("tripod.com")))
            {
                return(badRedirectResult);
            }

            if (inModel.Slug.IsEmpty())
            {
                return(badRedirectResult);
            }

            var post = _repository.Query(new PostBySlug(inModel.Slug)).SingleOrDefault();

            if (post == null)
            {
                return(badRedirectResult);
            }

            var postDisplay = new PostDisplay(post);

            if (inModel.ValidationResults.GetInvalidFields().Count() > 0)
            {
                var bblo = new BlogPostViewModel
                {
                    Post    = postDisplay,
                    Comment = new CommentFormDisplay(new Comment
                    {
                        Body           = inModel.Body,
                        UserSubscribed = inModel.Subscribed,
                        User           = new User
                        {
                            DisplayName     = inModel.DisplayName,
                            Email           = inModel.Email,
                            Url             = inModel.OptionalUrl,
                            TwitterUserName = inModel.OptionalTwitterUserName,
                        },
                    }, postDisplay),
                    SiteName = "{0} - {1}".ToFormat(inModel.SiteName, postDisplay.Title),
                    //ResultOverride = new RedirectResult(_resolver.PublishedPost(postDisplay) + "#leave_comment"),
                };
                bblo.Comment.ValidationResults.CloneFrom(inModel.ValidationResults);
                return(bblo);
            }

            var user = _userService.AddOrUpdateUser(inModel.Email, HttpUtility.HtmlEncode(inModel.DisplayName), HttpUtility.HtmlEncode(inModel.OptionalUrl), HttpUtility.HtmlEncode(inModel.OptionalTwitterUserName));

            _blogPostCommentService.AddCommentToBlogPost(HttpUtility.HtmlEncode(inModel.Body), inModel.Subscribed, user, post, inModel.OptionalTwitterUserName);

            return(new BlogPostViewModel {
                ResultOverride = new RedirectResult(_resolver.PublishedPost(postDisplay))
            });
        }
Пример #3
0
        public BlogPostViewModel Comment(BlogPostCommentViewModel inModel)
        {
            var badRedirectResult = new BlogPostViewModel {
                ResultOverride = new RedirectResult(_resolver.PageNotFoundUrl())
            };

            if (inModel.Slug.IsEmpty())
            {
                return(badRedirectResult);
            }

            var post = _repository.Query(new PostBySlug(inModel.Slug)).SingleOrDefault();

            if (post == null)
            {
                return(badRedirectResult);
            }

            var result = new BlogPostViewModel();

            valid_comment_submission(inModel, result);

            if (result.InvalidFields.Count > 0)
            {
                result.ResultOverride = new RedirectResult(_resolver.PublishedPost(new PostDisplay(post)));
                return(result);
            }

            var user = _userService.AddOrUpdateUser(inModel.UserEmail, inModel.UserDisplayName, inModel.UserUrl);

            _blogPostCommentService.AddCommentToBlogPost(inModel.Body, inModel.UserSubscribed, user, post);

            var postDisplay = new PostDisplay(post);

            result.ResultOverride = new RedirectResult(_resolver.PublishedPost(postDisplay));

            return(result);
        }