diff --git a/app/models/category.rb b/app/models/category.rb index 309ae4282..390f8f2d3 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -133,7 +133,8 @@ SQL # If you refactor this, test performance on a large database. Category.all.each do |c| - topics = c.topics.where(['topics.id <> ?', c.topic_id]).visible + topics = c.topics.visible + topics = topics.where(['topics.id <> ?', c.topic_id]) if c.topic_id c.topics_year = topics.created_since(1.year.ago).count c.topics_month = topics.created_since(1.month.ago).count c.topics_week = topics.created_since(1.week.ago).count diff --git a/spec/models/category_spec.rb b/spec/models/category_spec.rb index a71d78f4f..700d5e32a 100644 --- a/spec/models/category_spec.rb +++ b/spec/models/category_spec.rb @@ -380,6 +380,26 @@ describe Category do @category.posts_week.should == 1 end end + + context 'for uncategorized category' do + before do + @uncategorized = Category.find(SiteSetting.uncategorized_category_id) + create_post(user: Fabricate(:user), category: @uncategorized.name) + Category.update_stats + @uncategorized.reload + end + + it 'updates topic stats' do + @uncategorized.topics_week.should == 1 + @uncategorized.topics_month.should == 1 + @uncategorized.topics_year.should == 1 + @uncategorized.topic_count.should == 1 + @uncategorized.post_count.should == 1 + @uncategorized.posts_year.should == 1 + @uncategorized.posts_month.should == 1 + @uncategorized.posts_week.should == 1 + end + end end describe "#url" do