Commit 62c9d33bec19ac10fcb214e4c8d14420f8baabf5

Authored by Joenio Costa
2 parents 48a01d20 f50aa6ef

Merge remote-tracking branch 'participa/AI2931-comment_group_fixes' into AI2931-comment_group_fixes

plugins/comment_group/lib/ext/article.rb
@@ -7,8 +7,8 @@ class Article @@ -7,8 +7,8 @@ class Article
7 validate :not_empty_group_comments_removed 7 validate :not_empty_group_comments_removed
8 8
9 def not_empty_group_comments_removed 9 def not_empty_group_comments_removed
10 - if body  
11 - groups_with_comments = group_comments.collect {|comment| comment.group_id}.uniq 10 + if body && body_changed?
  11 + groups_with_comments = Comment.find(:all, :select => 'distinct group_id', :conditions => {:source_id => self.id}).map(&:group_id).compact
12 groups = Hpricot(body.to_s).search('.macro').collect{|element| element['data-macro-group_id'].to_i} 12 groups = Hpricot(body.to_s).search('.macro').collect{|element| element['data-macro-group_id'].to_i}
13 errors.add_to_base(N_('Not empty group comment cannot be removed')) unless (groups_with_comments-groups).empty? 13 errors.add_to_base(N_('Not empty group comment cannot be removed')) unless (groups_with_comments-groups).empty?
14 end 14 end
plugins/comment_group/test/unit/article_test.rb
@@ -16,16 +16,24 @@ class ArticleTest < ActiveSupport::TestCase @@ -16,16 +16,24 @@ class ArticleTest < ActiveSupport::TestCase
16 end 16 end
17 17
18 should 'do not allow a exclusion of a group comment macro if this group has comments' do 18 should 'do not allow a exclusion of a group comment macro if this group has comments' do
19 - article.update_attribute(:body, "<div class=\"macro\" data-macro-group_id=2></div>") 19 + article.body = "<div class=\"macro\" data-macro-group_id=2></div>"
20 comment1 = fast_create(Comment, :group_id => 1, :source_id => article.id) 20 comment1 = fast_create(Comment, :group_id => 1, :source_id => article.id)
21 assert !article.save 21 assert !article.save
22 assert_equal 'Not empty group comment cannot be removed', article.errors[:base] 22 assert_equal 'Not empty group comment cannot be removed', article.errors[:base]
23 end 23 end
24 24
25 should 'allow save if comment group macro is not removed for group with comments' do 25 should 'allow save if comment group macro is not removed for group with comments' do
26 - article.update_attribute(:body, "<div class=\"macro\" data-macro-group_id=1></div>") 26 + article.body = "<div class=\"macro\" data-macro-group_id=1></div>"
27 comment1 = fast_create(Comment, :group_id => 1, :source_id => article.id) 27 comment1 = fast_create(Comment, :group_id => 1, :source_id => article.id)
28 assert article.save 28 assert article.save
29 end 29 end
30 30
  31 + should 'do not validate empty group if article body is not changed' do
  32 + article.body = "<div class=\"macro\" data-macro-group_id=2></div>"
  33 + assert article.save
  34 + comment1 = fast_create(Comment, :group_id => 1, :source_id => article.id)
  35 + article.name = article.name + 'changed'
  36 + assert article.save
  37 + end
  38 +
31 end 39 end