import I18n from "I18n"; import { test } from "qunit"; import { click, currentRouteName, visit } from "@ember/test-helpers"; import { acceptance, exists, updateCurrentUser, } from "discourse/tests/helpers/qunit-helpers"; import { undockSidebar } from "discourse/tests/helpers/sidebar-helpers"; acceptance("Sidebar - Anon User", function () { // Don't show sidebar for anon user until we know what we want to display test("sidebar is not displayed", async function (assert) { await visit("/"); assert.ok( !document.body.classList.contains("has-sidebar-page"), "does not add sidebar utility class to body" ); assert.ok(!exists(".sidebar-container")); }); }); acceptance("Sidebar - User with sidebar disabled", function (needs) { needs.user({ experimental_sidebar_enabled: false }); test("sidebar is not displayed", async function (assert) { await visit("/"); assert.ok( !document.body.classList.contains("has-sidebar-page"), "does not add sidebar utility class to body" ); assert.ok(!exists(".sidebar-container")); }); }); acceptance("Sidebar - User with sidebar enabled", function (needs) { needs.user({ experimental_sidebar_enabled: true }); test("navigating to about route using sidebar", async function (assert) { await visit("/"); await click(".sidebar-footer-link-about"); assert.strictEqual(currentRouteName(), "about"); }); test("viewing keyboard shortcuts using sidebar", async function (assert) { await visit("/"); await click( `.sidebar-footer-actions-keyboard-shortcuts[title="${I18n.t( "keyboard_shortcuts_help.title" )}"]` ); assert.ok( exists("#keyboard-shortcuts-help"), "keyboard shortcuts help is displayed" ); }); test("navigating to site setting route using sidebar", async function (assert) { await visit("/"); await click(".sidebar-footer-link-site-settings"); assert.strictEqual(currentRouteName(), "adminSiteSettingsCategory"); }); test("site setting link is not shown in sidebar for non-admin user", async function (assert) { updateCurrentUser({ admin: false }); await visit("/"); assert.notOk(exists(".sidebar-footer-link-site-settings")); }); test("undocking and docking sidebar", async function (assert) { await visit("/"); assert.ok( document.body.classList.contains("has-sidebar-page"), "adds sidebar utility class to body" ); assert.ok(exists(".sidebar-container"), "displays the sidebar by default"); await undockSidebar(); assert.ok( !document.body.classList.contains("has-sidebar-page"), "removes sidebar utility class from body" ); assert.ok(!exists(".sidebar-container"), "hides the sidebar"); assert.ok( exists(".sidebar-hamburger-dropdown"), "displays the sidebar in hamburger dropdown automatically after undocking" ); await click("button.sidebar-footer-actions-dock-toggle"); assert.ok( exists(".sidebar-container"), "displays the sidebar after docking" ); assert.notOk( exists(".sidebar-hamburger-dropdown"), "hides the sidebar in hamburger dropdown automatically after docking" ); await click(".hamburger-dropdown"); assert.ok( exists(".sidebar-hamburger-dropdown"), "displays the sidebar in hamburger dropdown even when sidebar is docked" ); assert.notOk( exists(".sidebar-hamburger-dropdown .sidebar-footer-actions-dock-toggle"), "does not display sidebar dock toggle in hamburger dropdown when sidebar is docked" ); }); });