diff --git a/app/models/tag.rb b/app/models/tag.rb index c570f3565f..c533bbfd09 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -37,7 +37,7 @@ def path end def run_count - self.count = NodeTag.where(tid: tid).count + self.count = NodeTag.joins(:node).where(tid: tid).where('node.status = 1').count save end diff --git a/test/unit/tag_test.rb b/test/unit/tag_test.rb index ee82ea9149..7dbaa0ee76 100644 --- a/test/unit/tag_test.rb +++ b/test/unit/tag_test.rb @@ -19,6 +19,20 @@ def setup assert_not_nil tag.nodes end + test 'tag counting' do + tag = tags(:awesome) + assert_nil tag.count + assert_not_nil tag.run_count + assert_not_nil tag.count + assert_equal 3, tag.count + + tag = tags(:spam) + assert_nil tag.count + assert_not_nil tag.run_count + assert_not_nil tag.count + assert_equal 0, tag.count # even if used, it should not count spam tags + end + test 'tag followers' do followers = Tag.followers(node_tags(:awesome).name) assert !followers.empty?