Commit aa6be22b2af8fec732f9ae4d46d33fba55aced79
1 parent
09e8041b
Exists in
master
and in
28 other branches
[comments-refactor-review] Encapsulating comment moderation check
Showing
3 changed files
with
48 additions
and
1 deletions
Show diff stats
app/controllers/public/comment_controller.rb
... | ... | @@ -57,7 +57,7 @@ class CommentController < ApplicationController |
57 | 57 | return |
58 | 58 | end |
59 | 59 | |
60 | - if @comment.article.moderate_comments? && !(@comment.author && @comment.author_id == @comment.article.author_id) | |
60 | + if @comment.need_moderation? | |
61 | 61 | @comment.created_at = Time.now |
62 | 62 | ApproveComment.create!(:requestor => @comment.author, :target => profile, :comment_attributes => @comment.attributes.to_json) |
63 | 63 | ... | ... |
app/models/comment.rb
test/unit/comment_test.rb
... | ... | @@ -550,6 +550,49 @@ class CommentTest < ActiveSupport::TestCase |
550 | 550 | SpammerLogger.clean_log |
551 | 551 | end |
552 | 552 | |
553 | + should 'not need moderation if article is not moderated' do | |
554 | + article = Article.new | |
555 | + comment = Comment.new(:article => article) | |
556 | + | |
557 | + assert !comment.need_moderation? | |
558 | + end | |
559 | + | |
560 | + should 'not need moderation if the comment author is the article author' do | |
561 | + author = Person.new | |
562 | + article = Article.new | |
563 | + | |
564 | + article.stubs(:author).returns(author) | |
565 | + article.moderate_comments = true | |
566 | + | |
567 | + comment = Comment.new(:article => article) | |
568 | + comment.stubs(:author).returns(author) | |
569 | + | |
570 | + assert !comment.need_moderation? | |
571 | + end | |
572 | + | |
573 | + should 'need moderation if article is moderated and the comment has no author' do | |
574 | + article = Article.new | |
575 | + article.stubs(:moderate_comments?).returns(true) | |
576 | + | |
577 | + comment = Comment.new(:article => article) | |
578 | + | |
579 | + assert comment.need_moderation? | |
580 | + end | |
581 | + | |
582 | + should 'need moderation if article is moderated and the comment author is different from article author' do | |
583 | + article_author = Person.new | |
584 | + comment_author = Person.new | |
585 | + | |
586 | + article = Article.new | |
587 | + article.stubs(:author).returns(article_author) | |
588 | + article.stubs(:moderate_comments?).returns(true) | |
589 | + | |
590 | + comment = Comment.new(:article => article) | |
591 | + comment.stubs(:author).returns(comment_author) | |
592 | + | |
593 | + assert comment.need_moderation? | |
594 | + end | |
595 | + | |
553 | 596 | private |
554 | 597 | |
555 | 598 | def create_comment(args = {}) | ... | ... |