mirror of
https://github.com/discourse/discourse.git
synced 2026-08-11 21:45:25 -05:00
FIX: /categories page on mobile
This commit is contained in:
@@ -5,9 +5,10 @@ describe CategoryList do
|
||||
|
||||
let(:user) { Fabricate(:user) }
|
||||
let(:admin) { Fabricate(:admin) }
|
||||
let(:category_list) { CategoryList.new(Guardian.new user) }
|
||||
let(:category_list) { CategoryList.new(Guardian.new(user), include_topics: true) }
|
||||
|
||||
context "security" do
|
||||
|
||||
it "properly hide secure categories" do
|
||||
cat = Fabricate(:category)
|
||||
Fabricate(:topic, category: cat)
|
||||
@@ -19,6 +20,33 @@ describe CategoryList do
|
||||
expect(CategoryList.new(Guardian.new user).categories.count).to eq(1)
|
||||
expect(CategoryList.new(Guardian.new nil).categories.count).to eq(1)
|
||||
end
|
||||
|
||||
it "doesn't show topics that you can't view" do
|
||||
public_cat = Fabricate(:category) # public category
|
||||
Fabricate(:topic, category: public_cat)
|
||||
|
||||
private_cat = Fabricate(:category) # private category
|
||||
Fabricate(:topic, category: private_cat)
|
||||
private_cat.set_permissions(admins: :full)
|
||||
private_cat.save
|
||||
|
||||
secret_subcat = Fabricate(:category, parent_category_id: public_cat.id) # private subcategory
|
||||
Fabricate(:topic, category: secret_subcat)
|
||||
secret_subcat.set_permissions(admins: :full)
|
||||
secret_subcat.save
|
||||
|
||||
CategoryFeaturedTopic.feature_topics
|
||||
|
||||
expect(CategoryList.new(Guardian.new(admin), include_topics: true).categories.find { |x| x.name == public_cat.name }.displayable_topics.count).to eq(2)
|
||||
expect(CategoryList.new(Guardian.new(admin), include_topics: true).categories.find { |x| x.name == private_cat.name }.displayable_topics.count).to eq(1)
|
||||
|
||||
expect(CategoryList.new(Guardian.new(user), include_topics: true).categories.find { |x| x.name == public_cat.name }.displayable_topics.count).to eq(1)
|
||||
expect(CategoryList.new(Guardian.new(user), include_topics: true).categories.find { |x| x.name == private_cat.name }).to eq(nil)
|
||||
|
||||
expect(CategoryList.new(Guardian.new(nil), include_topics: true).categories.find { |x| x.name == public_cat.name }.displayable_topics.count).to eq(1)
|
||||
expect(CategoryList.new(Guardian.new(nil), include_topics: true).categories.find { |x| x.name == private_cat.name }).to eq(nil)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context "with a category" do
|
||||
@@ -34,7 +62,27 @@ describe CategoryList do
|
||||
expect(category.id).to eq(topic_category.id)
|
||||
expect(category.featured_topics.include?(topic)).to eq(true)
|
||||
end
|
||||
end
|
||||
|
||||
context "with pinned topics in a category" do
|
||||
let!(:topic1) { Fabricate(:topic, category: topic_category, bumped_at: 8.minutes.ago) }
|
||||
let!(:topic2) { Fabricate(:topic, category: topic_category, bumped_at: 5.minutes.ago) }
|
||||
let!(:topic3) { Fabricate(:topic, category: topic_category, bumped_at: 2.minutes.ago) }
|
||||
let!(:pinned) { Fabricate(:topic, category: topic_category, pinned_at: 10.minutes.ago, bumped_at: 10.minutes.ago) }
|
||||
let(:category) { category_list.categories.find{|c| c.id == topic_category.id} }
|
||||
|
||||
before do
|
||||
SiteSetting.stubs(:category_featured_topics).returns(2)
|
||||
end
|
||||
|
||||
it "returns pinned topic first" do
|
||||
expect(category.displayable_topics.map(&:id)).to eq([pinned.id, topic3.id])
|
||||
end
|
||||
|
||||
it "returns topics in bumped_at order if pinned was unpinned" do
|
||||
PinnedCheck.stubs(:unpinned?).returns(true)
|
||||
expect(category.displayable_topics.map(&:id)).to eq([topic3.id, topic2.id])
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user