mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 07:53:49 +08:00
FEATURE: default sidebar categories and tags (#17939)
Ability to set up default sidebar categories and tags for authenticated users
This commit is contained in:

committed by
GitHub

parent
49fa2e93c2
commit
caab916569
@ -221,10 +221,15 @@ RSpec.describe CurrentUserSerializer do
|
||||
end
|
||||
|
||||
describe '#sidebar_tags' do
|
||||
fab!(:tag_sidebar_section_link) { Fabricate(:tag_sidebar_section_link, user: user) }
|
||||
fab!(:tag_sidebar_section_link_2) { Fabricate(:tag_sidebar_section_link, user: user) }
|
||||
fab!(:tag_1) { Fabricate(:tag, name: "foo") }
|
||||
fab!(:tag_2) { Fabricate(:tag, name: "bar") }
|
||||
fab!(:hidden_tag) { Fabricate(:tag, name: "secret") }
|
||||
fab!(:staff_tag_group) { Fabricate(:tag_group, permissions: { "staff" => 1 }, tag_names: ["secret"]) }
|
||||
let(:tag_sidebar_section_link) { Fabricate(:tag_sidebar_section_link, user: user) }
|
||||
let(:tag_sidebar_section_link_2) { Fabricate(:tag_sidebar_section_link, user: user) }
|
||||
|
||||
it "is not included when experimental sidebar has not been enabled" do
|
||||
tag_sidebar_section_link
|
||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
||||
SiteSetting.tagging_enabled = true
|
||||
|
||||
@ -234,6 +239,7 @@ RSpec.describe CurrentUserSerializer do
|
||||
end
|
||||
|
||||
it "is not included when tagging has not been enabled" do
|
||||
tag_sidebar_section_link
|
||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
||||
SiteSetting.tagging_enabled = false
|
||||
|
||||
@ -243,6 +249,7 @@ RSpec.describe CurrentUserSerializer do
|
||||
end
|
||||
|
||||
it "is present when experimental sidebar and tagging has been enabled" do
|
||||
tag_sidebar_section_link
|
||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
||||
SiteSetting.tagging_enabled = true
|
||||
|
||||
@ -255,13 +262,43 @@ RSpec.describe CurrentUserSerializer do
|
||||
{ name: tag_sidebar_section_link_2.linkable.name, pm_only: true }
|
||||
)
|
||||
end
|
||||
|
||||
it 'includes visible default sidebar tags' do
|
||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
||||
SiteSetting.tagging_enabled = true
|
||||
SiteSetting.default_sidebar_tags = "foo|bar|secret"
|
||||
|
||||
json = serializer.as_json
|
||||
|
||||
expect(json[:sidebar_tags]).to eq([
|
||||
{ name: "foo", pm_only: false },
|
||||
{ name: "bar", pm_only: false }
|
||||
])
|
||||
end
|
||||
|
||||
it 'includes tags choosen by user' do
|
||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
||||
SiteSetting.tagging_enabled = true
|
||||
SiteSetting.default_sidebar_tags = "foo|bar|secret"
|
||||
tag_sidebar_section_link = Fabricate(:tag_sidebar_section_link, user: user)
|
||||
|
||||
json = serializer.as_json
|
||||
|
||||
expect(json[:sidebar_tags]).to eq([
|
||||
{ name: tag_sidebar_section_link.linkable.name, pm_only: false }
|
||||
])
|
||||
end
|
||||
end
|
||||
|
||||
describe '#sidebar_category_ids' do
|
||||
fab!(:category_sidebar_section_link) { Fabricate(:category_sidebar_section_link, user: user) }
|
||||
fab!(:category_sidebar_section_link_2) { Fabricate(:category_sidebar_section_link, user: user) }
|
||||
fab!(:category) { Fabricate(:category) }
|
||||
fab!(:category_2) { Fabricate(:category) }
|
||||
fab!(:private_category) { Fabricate(:private_category, group: Fabricate(:group)) }
|
||||
let(:category_sidebar_section_link) { Fabricate(:category_sidebar_section_link, user: user) }
|
||||
let(:category_sidebar_section_link_2) { Fabricate(:category_sidebar_section_link, user: user) }
|
||||
|
||||
it "is not included when SiteSeting.enable_experimental_sidebar_hamburger is false" do
|
||||
category_sidebar_section_link
|
||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
||||
|
||||
json = serializer.as_json
|
||||
@ -270,6 +307,7 @@ RSpec.describe CurrentUserSerializer do
|
||||
end
|
||||
|
||||
it "is not included when experimental sidebar has not been enabled" do
|
||||
category_sidebar_section_link
|
||||
SiteSetting.enable_experimental_sidebar_hamburger = false
|
||||
|
||||
json = serializer.as_json
|
||||
@ -277,15 +315,23 @@ RSpec.describe CurrentUserSerializer do
|
||||
expect(json[:sidebar_category_ids]).to eq(nil)
|
||||
end
|
||||
|
||||
it "is present when experimental sidebar has been enabled" do
|
||||
it 'includes visible default sidebar categories' do
|
||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
||||
SiteSetting.default_sidebar_categories = "#{category.id}|#{category_2.id}|#{private_category.id}"
|
||||
|
||||
json = serializer.as_json
|
||||
expect(json[:sidebar_category_ids]).to eq([category.id, category_2.id])
|
||||
end
|
||||
|
||||
expect(json[:sidebar_category_ids]).to contain_exactly(
|
||||
category_sidebar_section_link.linkable_id,
|
||||
category_sidebar_section_link_2.linkable_id
|
||||
)
|
||||
it 'includes categories choosen by user' do
|
||||
SiteSetting.enable_experimental_sidebar_hamburger = true
|
||||
SiteSetting.default_sidebar_categories = "#{category.id}|#{category_2.id}|#{private_category.id}"
|
||||
|
||||
category_sidebar_section_link
|
||||
category_sidebar_section_link_2
|
||||
|
||||
json = serializer.as_json
|
||||
expect(json[:sidebar_category_ids]).to eq([category_sidebar_section_link.linkable.id, category_sidebar_section_link_2.linkable.id])
|
||||
end
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user