This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/tests/acceptance/sidebar-test.js

129 lines
3.6 KiB
JavaScript

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"
);
});
});