# 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