Commit b1e38748811821c3fe69539c7937950c4e00de61
1 parent
833e0012
Exists in
master
and in
14 other branches
comment_paragraph: preload comment counts
Showing
2 changed files
with
11 additions
and
1 deletions
Show diff stats
plugins/comment_paragraph/lib/comment_paragraph_plugin/macros/allow_comment.rb
... | ... | @@ -10,7 +10,8 @@ class CommentParagraphPlugin::AllowComment < Noosfero::Plugin::Macro |
10 | 10 | def parse(params, inner_html, source) |
11 | 11 | paragraph_uuid = params[:paragraph_uuid] |
12 | 12 | article = source |
13 | - count = article.paragraph_comments.without_spam.in_paragraph(paragraph_uuid).count | |
13 | + @paragraph_comments_counts ||= article.paragraph_comments.without_spam.group(:paragraph_uuid).reorder(:paragraph_uuid).count | |
14 | + count = @paragraph_comments_counts.fetch(paragraph_uuid, 0) | |
14 | 15 | |
15 | 16 | proc { |
16 | 17 | if controller.kind_of?(ContentViewerController) && article.comment_paragraph_plugin_activated? | ... | ... |
plugins/comment_paragraph/test/unit/allow_comment_test.rb
... | ... | @@ -46,4 +46,13 @@ class AllowCommentTest < ActiveSupport::TestCase |
46 | 46 | assert_equal 'inner', instance_eval(&content) |
47 | 47 | end |
48 | 48 | |
49 | + should 'preload comment counts when parsing content' do | |
50 | + 3.times { fast_create(Comment, :paragraph_uuid => '2', :source_id => article.id) } | |
51 | + content = macro.parse({:paragraph_uuid => comment.paragraph_uuid}, article.body, article) | |
52 | + paragraph_comments_counts = macro.instance_variable_get(:@paragraph_comments_counts) | |
53 | + assert_equivalent ['1', '2'], paragraph_comments_counts.keys | |
54 | + assert_equal 1, paragraph_comments_counts['1'] | |
55 | + assert_equal 3, paragraph_comments_counts['2'] | |
56 | + end | |
57 | + | |
49 | 58 | end | ... | ... |