discourse/plugins/chat/spec/system/admin_sidebar_navigation_spec.rb
Joffrey JAFFEUX e79a50d7a9
DEV: adds logo page component (#28276)
Usage:

```
click_logo # globally accessible
PageObjects::Components::Logo.click
PageObjects::Components::Logo.hover
```
2024-08-08 13:52:48 +02:00

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