Show empty categories to those who can create them (admins/mods)

This commit is contained in:
Robin Ward 2013-02-21 10:42:27 -05:00
parent 560411eece
commit 42d996aae1
2 changed files with 19 additions and 6 deletions

View File

@ -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?

View File

@ -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 }