FIX: Admin can't see user sidebar preferences of other users (#19570)

This commit is contained in:
Alan Guo Xiang Tan
2022-12-23 11:45:29 +08:00
committed by GitHub
parent 9f927cf999
commit 1d926e88a9
11 changed files with 283 additions and 236 deletions

View File

@@ -0,0 +1,27 @@
# frozen_string_literal: true
module PageObjects
module Pages
class UserPreferencesSidebar < PageObjects::Pages::Base
def visit(user)
page.visit("/u/#{user.username}/preferences/sidebar")
self
end
def has_sidebar_categories_preference?(*categories)
category_selector_header = page.find(".category-selector .select-kit-header-wrapper")
category_selector_header.has_content?(categories.map(&:name).join(", "))
end
def has_sidebar_tags_preference?(*tags)
tag_selector_header = page.find(".tag-chooser .select-kit-header-wrapper")
tag_selector_header.has_content?(tags.map(&:name).join(", "))
end
def has_sidebar_list_destination_preference?(type)
list_selector_header = page.find(".preferences-sidebar-navigation__list-destination-selector .select-kit-header-wrapper")
list_selector_header.has_content?(I18n.t("js.user.experimental_sidebar.list_destination_#{type}"))
end
end
end
end

View File

@@ -0,0 +1,36 @@
# frozen_string_literal: true
describe 'Viewing sidebar preferences', type: :system, js: true do
let(:user_preferences_sidebar_page) { PageObjects::Pages::UserPreferencesSidebar.new }
before do
SiteSetting.navigation_menu = "sidebar"
end
context 'as an admin' do
fab!(:admin) { Fabricate(:admin) }
fab!(:user) { Fabricate(:user) }
fab!(:category) { Fabricate(:category) }
fab!(:category2) { Fabricate(:category) }
fab!(:category_sidebar_section_link) { Fabricate(:category_sidebar_section_link, user: user, linkable: category) }
fab!(:category2_sidebar_section_link) { Fabricate(:category_sidebar_section_link, user: user, linkable: category2) }
fab!(:tag) { Fabricate(:tag) }
fab!(:tag2) { Fabricate(:tag) }
fab!(:tag_sidebar_section_link) { Fabricate(:tag_sidebar_section_link, user: user, linkable: tag) }
fab!(:tag2_sidebar_section_link) { Fabricate(:tag_sidebar_section_link, user: user, linkable: tag2) }
before do
sign_in(admin)
end
it 'should be able to view sidebar preferences of another user' do
user.user_option.update!(sidebar_list_destination: "unread_new")
user_preferences_sidebar_page.visit(user)
expect(user_preferences_sidebar_page).to have_sidebar_categories_preference(category, category2)
expect(user_preferences_sidebar_page).to have_sidebar_tags_preference(tag, tag2)
expect(user_preferences_sidebar_page).to have_sidebar_list_destination_preference("unread_new")
end
end
end