mirror of
https://github.com/discourse/discourse.git
synced 2024-12-02 10:05:48 +08:00
e79a50d7a9
Usage: ``` click_logo # globally accessible PageObjects::Components::Logo.click PageObjects::Components::Logo.hover ```
82 lines
3.1 KiB
Ruby
82 lines
3.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe "Admin Revamp | Sidebar Navigation | Plugin Links", type: :system do
|
|
fab!(:admin)
|
|
let(:sidebar) { PageObjects::Components::NavigationMenu::Sidebar.new }
|
|
let(:chat_page) { PageObjects::Pages::Chat.new }
|
|
|
|
before do
|
|
chat_system_bootstrap
|
|
SiteSetting.admin_sidebar_enabled_groups = Group::AUTO_GROUPS[:admins]
|
|
sign_in(admin)
|
|
end
|
|
|
|
it "shows links to enabled plugin admin routes" do
|
|
visit("/admin")
|
|
sidebar.toggle_all_sections
|
|
expect(sidebar).to have_section_link("Chat", href: "/admin/plugins/chat")
|
|
end
|
|
|
|
it "does not duplicate links to enabled plugin admin routes when showing and hiding sidebar" do
|
|
visit("/admin")
|
|
sidebar.toggle_all_sections
|
|
expect(sidebar).to have_section_link("Chat", href: "/admin/plugins/chat", count: 1)
|
|
find(".header-sidebar-toggle").click
|
|
find(".header-sidebar-toggle").click
|
|
expect(sidebar).to have_section_link("Chat", href: "/admin/plugins/chat", count: 1)
|
|
end
|
|
|
|
it "does not show plugin links in the admin sidebar in safe mode" do
|
|
visit("/safe-mode")
|
|
find("#btn-enter-safe-mode").click
|
|
expect(sidebar).to have_section_link("Admin", href: "/admin")
|
|
sidebar.click_link_in_section("community", "admin")
|
|
expect(sidebar).to have_no_section_link("Chat", href: "/admin/plugins/chat")
|
|
end
|
|
|
|
describe "admin sidebar respects separated and combined sidebar modes" do
|
|
it "reverts to always (separated) mode after entering and leaving admin section" do
|
|
admin.user_option.update!(
|
|
chat_separate_sidebar_mode: UserOption.chat_separate_sidebar_modes[:always],
|
|
)
|
|
visit("/")
|
|
expect(sidebar).to have_switch_button("chat")
|
|
sidebar.click_link_in_section("community", "admin")
|
|
expect(sidebar).to have_no_switch_button("chat")
|
|
click_logo
|
|
expect(sidebar).to have_switch_button("chat")
|
|
end
|
|
|
|
it "reverts to the never (combined) mode after entering and leaving admin section" do
|
|
admin.user_option.update!(
|
|
chat_separate_sidebar_mode: UserOption.chat_separate_sidebar_modes[:never],
|
|
)
|
|
visit("/")
|
|
expect(sidebar).to have_section("chat-channels")
|
|
expect(sidebar).to have_no_switch_button("chat")
|
|
sidebar.click_link_in_section("community", "admin")
|
|
expect(sidebar).to have_no_section("chat-channels")
|
|
click_logo
|
|
expect(sidebar).to have_section("chat-channels")
|
|
end
|
|
|
|
it "keeps the admin sidebar open instead of switching to the main panel when toggling the drawer" do
|
|
membership =
|
|
Fabricate(
|
|
:user_chat_channel_membership,
|
|
user: admin,
|
|
chat_channel: Fabricate(:chat_channel),
|
|
)
|
|
admin.upsert_custom_fields(::Chat::LAST_CHAT_CHANNEL_ID => membership.chat_channel.id)
|
|
chat_page.prefers_full_page
|
|
visit("/admin")
|
|
expect(sidebar).to have_section("admin-root")
|
|
chat_page.open_from_header
|
|
expect(sidebar).to have_no_section("admin-root")
|
|
chat_page.minimize_full_page
|
|
expect(chat_page).to have_drawer
|
|
expect(sidebar).to have_section("admin-root")
|
|
end
|
|
end
|
|
end
|