FIX: Preload parent categories for sidebar (#25726)

When "lazy load categories" is enabled, only the categories present in
the sidebar are preloaded. This is insufficient because the parent
categories are necessary too for the sidebar to be rendered properly.
This commit is contained in:
Bianca Nenciu
2024-02-16 16:39:18 +02:00
committed by GitHub
parent 330cb837da
commit a24d110258
3 changed files with 49 additions and 14 deletions

View File

@ -183,6 +183,40 @@ RSpec.describe Site do
DiscoursePluginRegistry.clear_modifiers!
end
end
context "with lazy loaded categories enabled" do
fab!(:user)
before { SiteSetting.lazy_load_categories_groups = "#{Group::AUTO_GROUPS[:everyone]}" }
it "does not return any categories for anonymous users" do
site = Site.new(Guardian.new)
expect(site.categories).to eq([])
end
it "returns only sidebar categories and their parent categories" do
parent_category = Fabricate(:category)
category.update!(parent_category: parent_category)
Fabricate(:category_sidebar_section_link, linkable: category, user: user)
site = Site.new(Guardian.new(user))
expect(site.categories.map { |c| c[:id] }).to contain_exactly(
parent_category.id,
category.id,
)
end
it "returns only visible sidebar categories" do
Fabricate(:category_sidebar_section_link, linkable: category, user: user)
category.update!(read_restricted: true)
site = Site.new(Guardian.new(user))
expect(site.categories).to eq([])
end
end
end
it "omits groups user can not see" do