diff --git a/app/models/category_list.rb b/app/models/category_list.rb index 09d555636..38a842966 100644 --- a/app/models/category_list.rb +++ b/app/models/category_list.rb @@ -9,7 +9,7 @@ class CategoryList .includes(:featured_users) .order('topics_week desc, topics_month desc, topics_year desc') .to_a - + # Support for uncategorized topics uncategorized_topics = Topic .listable_topics @@ -45,8 +45,10 @@ class CategoryList @categories.insert(insert_at || @categories.size, uncategorized) end - # Remove categories with no featured topics - @categories.delete_if {|c| c.featured_topics.blank? } + # Remove categories with no featured topics unless we have the ability to edit one + unless Guardian.new(current_user).can_create?(Category) + @categories.delete_if {|c| c.featured_topics.blank? } + end # Get forum topic user records if appropriate if current_user.present? diff --git a/spec/components/category_list_spec.rb b/spec/components/category_list_spec.rb index 809ed2ca2..b88525a7b 100644 --- a/spec/components/category_list_spec.rb +++ b/spec/components/category_list_spec.rb @@ -42,12 +42,23 @@ describe CategoryList do context "with a category" do - let(:topic_category) { Fabricate(:category) } + let!(:topic_category) { Fabricate(:category) } + + context "without a featured topic" do + + it "should not return empty categories" do + category_list.categories.should be_blank + end + + it "returns empty categories for those who can create them" do + Guardian.any_instance.expects(:can_create?).with(Category).returns(true) + category_list.categories.should be_present + end + - it "should not return empty categories (no featured topics)" do - category_list.categories.should be_blank end + context "with a topic in a category" do let!(:topic) { Fabricate(:topic, category: topic_category)} let(:category) { category_list.categories.first }