Commit 252ec20a19d4019ca95061c946cc531308f0c150

Authored by Antonio Terceiro
1 parent d7430804

Ignore spam when constructing threads

ActionItem2306
app/models/comment.rb
@@ -147,10 +147,14 @@ class Comment < ActiveRecord::Base @@ -147,10 +147,14 @@ class Comment < ActiveRecord::Base
147 def self.as_thread 147 def self.as_thread
148 result = {} 148 result = {}
149 root = [] 149 root = []
150 - all.each do |c| 150 + order(:id).each do |c|
151 c.replies = [] 151 c.replies = []
152 result[c.id] ||= c 152 result[c.id] ||= c
153 - c.reply_of_id.nil? ? root << c : result[c.reply_of_id].replies << c 153 + if result[c.reply_of_id]
  154 + result[c.reply_of_id].replies << c
  155 + else
  156 + root << c
  157 + end
154 end 158 end
155 root 159 root
156 end 160 end
test/unit/comment_test.rb
@@ -536,6 +536,15 @@ class CommentTest &lt; ActiveSupport::TestCase @@ -536,6 +536,15 @@ class CommentTest &lt; ActiveSupport::TestCase
536 assert_equal c, SpamNotification.marked_as_ham 536 assert_equal c, SpamNotification.marked_as_ham
537 end 537 end
538 538
  539 + should 'ignore spam when constructing threads' do
  540 + original = create_comment
  541 + response = create_comment(:reply_of_id => original.id)
  542 + original.spam!
  543 +
  544 + assert_equivalent [response], Comment.without_spam.as_thread
  545 + end
  546 +
  547 +
539 should 'store User-Agent' do 548 should 'store User-Agent' do
540 c = Comment.new(:user_agent => 'foo') 549 c = Comment.new(:user_agent => 'foo')
541 assert_equal 'foo', c.user_agent 550 assert_equal 'foo', c.user_agent