FEATURE: default sidebar categories and tags (#17939)

Ability to set up default sidebar categories and tags for authenticated users
This commit is contained in:
Krzysztof Kotlarek
2022-08-22 08:46:20 +10:00
committed by GitHub
parent 49fa2e93c2
commit caab916569
5 changed files with 84 additions and 12 deletions

View File

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