FEATURE: Full height hamburger menu
- Rename `site-map` to `hamburger-menu` - Includes acceptance tests
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
import { acceptance } from "helpers/qunit-helpers";
|
||||
|
||||
acceptance("Hamburger Menu - Staff", { loggedIn: true });
|
||||
|
||||
test("Menu Items", (assert) => {
|
||||
visit("/");
|
||||
click("#toggle-hamburger-menu");
|
||||
andThen(() => {
|
||||
assert.ok(exists("#hamburger-menu .admin-link"));
|
||||
assert.ok(exists("#hamburger-menu .flagged-posts-link"));
|
||||
assert.ok(exists("#hamburger-menu .flagged-posts.badge-notification"), "it displays flag notifications");
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,39 @@
|
||||
import { acceptance } from "helpers/qunit-helpers";
|
||||
|
||||
acceptance("Hamburger Menu");
|
||||
|
||||
test("Toggle Menu", (assert) => {
|
||||
visit("/");
|
||||
andThen(() => {
|
||||
assert.ok(exists("#hamburger-menu.slideright"), "hidden by default");
|
||||
});
|
||||
|
||||
click("#toggle-hamburger-menu");
|
||||
andThen(() => {
|
||||
assert.ok(!exists("#hamburger-menu.slideright"), "a click makes it appear");
|
||||
});
|
||||
|
||||
click(".close-hamburger");
|
||||
andThen(() => {
|
||||
assert.ok(exists("#hamburger-menu.slideright"), "clicking the X hides it");
|
||||
});
|
||||
});
|
||||
|
||||
test("Menu Items", (assert) => {
|
||||
visit("/");
|
||||
click("#toggle-hamburger-menu");
|
||||
andThen(() => {
|
||||
assert.ok(!exists("#hamburger-menu .admin-link"));
|
||||
assert.ok(!exists("#hamburger-menu .flagged-posts-link"));
|
||||
|
||||
assert.ok(exists("#hamburger-menu .latest-topics-link"));
|
||||
assert.ok(exists("#hamburger-menu .badge-link"));
|
||||
assert.ok(exists("#hamburger-menu .user-directory-link"));
|
||||
assert.ok(exists("#hamburger-menu .keyboard-shortcuts-link"));
|
||||
assert.ok(exists("#hamburger-menu .faq-link"));
|
||||
assert.ok(exists("#hamburger-menu .about-link"));
|
||||
assert.ok(exists("#hamburger-menu .categories-link"));
|
||||
|
||||
assert.ok(exists('#hamburger-menu .category-link'));
|
||||
});
|
||||
});
|
||||
@@ -7,7 +7,6 @@ test("header", () => {
|
||||
ok(exists("header"), "is rendered");
|
||||
ok(exists(".logo-big"), "it renders the large logo by default");
|
||||
not(exists("#notifications-dropdown li"), "no notifications at first");
|
||||
not(exists('#site-map-dropdown'), "no site map by default");
|
||||
not(exists("#user-dropdown:visible"), "initially user dropdown is closed");
|
||||
not(exists("#search-dropdown:visible"), "initially search box is closed");
|
||||
});
|
||||
@@ -21,14 +20,6 @@ test("header", () => {
|
||||
ok(exists(".logo-small"), "it shows the small logo when `showExtraInfo` is enabled");
|
||||
});
|
||||
|
||||
// Site Map
|
||||
click("#site-map");
|
||||
andThen(() => {
|
||||
ok(exists('#site-map-dropdown'), "is rendered after user opens it");
|
||||
ok(exists("#site-map-dropdown .faq-link"), "it shows the faq link");
|
||||
ok(exists("#site-map-dropdown .category-links"), "has categories correctly bound");
|
||||
});
|
||||
|
||||
// Search
|
||||
click("#search-button");
|
||||
andThen(() => {
|
||||
|
||||
@@ -13,13 +13,6 @@ test("header", () => {
|
||||
ok($items.first().hasClass("read"), "correctly binds items' 'read' class");
|
||||
});
|
||||
|
||||
// Site Map
|
||||
click("#site-map");
|
||||
andThen(() => {
|
||||
ok(exists("#site-map-dropdown .admin-link"), "it has the admin link");
|
||||
ok(exists("#site-map-dropdown .flagged-posts.badge-notification"), "it displays flag notifications");
|
||||
});
|
||||
|
||||
// User dropdown
|
||||
click("#current-user");
|
||||
andThen(() => {
|
||||
|
||||
@@ -37,7 +37,7 @@ test("redirect", () => {
|
||||
ok(invisible('.login-modal'), "it closes the login modal");
|
||||
});
|
||||
|
||||
click('#site-map');
|
||||
click('#toggle-hamburger-menu');
|
||||
andThen(() => {
|
||||
ok(exists('.login-modal'), "site map opens the login modal");
|
||||
});
|
||||
|
||||
@@ -55,7 +55,7 @@ module("lib:keyboard-shortcuts", {
|
||||
"<div class='alert alert-info clickable'></div>",
|
||||
"<button id='create-topic'></button>",
|
||||
"<div id='user-notifications'></div>",
|
||||
"<div id='site-map'></div>",
|
||||
"<div id='toggle-hamburger-menu'></div>",
|
||||
"<div id='search-button'></div>",
|
||||
"<div id='current-user'></div>",
|
||||
"<div id='keyboard-help'></div>"
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
moduleFor("controller:site-map-category", 'controller:site-map-category', {
|
||||
needs: ['controller:site-map']
|
||||
});
|
||||
|
||||
test("showTopicCount anonymous", function() {
|
||||
var controller = this.subject();
|
||||
ok(controller.get("showTopicCount"), 'true when anonymous');
|
||||
});
|
||||
|
||||
test("showTopicCount logged in", function() {
|
||||
var controller = this.subject({ currentUser: Discourse.User.create() });
|
||||
ok(!controller.get("showTopicCount"), 'false when logged in');
|
||||
});
|
||||
|
||||
test("unreadTotal default", function() {
|
||||
var controller = this.subject({ currentUser: Discourse.User.create() });
|
||||
ok(!controller.get('unreadTotal'), "empty by default");
|
||||
});
|
||||
|
||||
test("unreadTotal with values", function() {
|
||||
var controller = this.subject({
|
||||
currentUser: Discourse.User.create(),
|
||||
model: { unreadTopics: 1, newTopics: 3 }
|
||||
});
|
||||
equal(controller.get('unreadTotal'), 4);
|
||||
});
|
||||
@@ -1,77 +0,0 @@
|
||||
var oldMobileView;
|
||||
|
||||
moduleFor("controller:site-map", "controller:site-map", {
|
||||
needs: ['controller:application', 'controller:header'],
|
||||
|
||||
setup: function() {
|
||||
oldMobileView = Discourse.Mobile.mobileView;
|
||||
},
|
||||
|
||||
teardown: function() {
|
||||
Discourse.Mobile.mobileView = oldMobileView;
|
||||
}
|
||||
});
|
||||
|
||||
test("showAdminLinks", function() {
|
||||
const currentUser = Ember.Object.create({ staff: true });
|
||||
const controller = this.subject({ currentUser });
|
||||
equal(controller.get("showAdminLinks"), true, "is true when current user is a staff member");
|
||||
|
||||
currentUser.set("staff", false);
|
||||
equal(controller.get("showAdminLinks"), false, "is false when current user is not a staff member");
|
||||
});
|
||||
|
||||
test("faqUrl returns faq url configured in site settings if it is set", function() {
|
||||
Discourse.SiteSettings.faq_url = "faq-url";
|
||||
var controller = this.subject();
|
||||
equal(controller.get("faqUrl"), "faq-url");
|
||||
});
|
||||
|
||||
test("faqUrl returns default '/faq' url when there is no corresponding site setting set", function() {
|
||||
Discourse.SiteSettings.faq_url = null;
|
||||
var controller = this.subject();
|
||||
equal(controller.get("faqUrl"), "/faq");
|
||||
});
|
||||
|
||||
test("showMoblieToggle returns true when mobile theme is enabled in site settings", function() {
|
||||
Discourse.SiteSettings.enable_mobile_theme = true;
|
||||
Discourse.Mobile.isMobileDevice = true;
|
||||
var controller = this.subject();
|
||||
controller.capabilities = { touch: true };
|
||||
equal(controller.get("showMobileToggle"), true);
|
||||
});
|
||||
|
||||
test("showMoblieToggle returns false when mobile theme is disabled in site settings", function() {
|
||||
Discourse.SiteSettings.enable_mobile_theme = false;
|
||||
Discourse.Mobile.isMobileDevice = true;
|
||||
var controller = this.subject();
|
||||
equal(controller.get("showMobileToggle"), false);
|
||||
});
|
||||
|
||||
test("mobileViewLinkTextKey returns translation key for a desktop view if the current view is mobile view", function() {
|
||||
Discourse.Mobile.mobileView = true;
|
||||
var controller = this.subject();
|
||||
equal(controller.get("mobileViewLinkTextKey"), "desktop_view");
|
||||
});
|
||||
|
||||
test("mobileViewLinkTextKey returns translation key for a mobile view if the current view is desktop view", function() {
|
||||
Discourse.Mobile.mobileView = false;
|
||||
var controller = this.subject();
|
||||
equal(controller.get("mobileViewLinkTextKey"), "mobile_view");
|
||||
});
|
||||
|
||||
test("categories", function() {
|
||||
var categoryListStub = ["category1", "category2"];
|
||||
sandbox.stub(Discourse.Category, "list").returns(categoryListStub);
|
||||
|
||||
var controller = this.subject({ siteSettings: Discourse.SiteSettings });
|
||||
deepEqual(controller.get("categories"), categoryListStub, "returns the list of categories");
|
||||
});
|
||||
|
||||
test("toggleMobleView", function() {
|
||||
sandbox.stub(Discourse.Mobile, "toggleMobileView");
|
||||
|
||||
var controller = this.subject();
|
||||
controller.send("toggleMobileView");
|
||||
ok(Discourse.Mobile.toggleMobileView.calledOnce, "switches between desktop and mobile views");
|
||||
});
|
||||
@@ -1,7 +1,7 @@
|
||||
/* global asyncTest, fixtures */
|
||||
|
||||
import sessionFixtures from 'fixtures/session-fixtures';
|
||||
import siteFixtures from 'fixtures/site_fixtures';
|
||||
import siteFixtures from 'fixtures/site-fixtures';
|
||||
import HeaderView from 'discourse/views/header';
|
||||
|
||||
function currentUser() {
|
||||
|
||||
@@ -74,6 +74,7 @@ Discourse.SiteSettingsOriginal = {
|
||||
"polling_interval":3000,
|
||||
"anon_polling_interval":30000,
|
||||
"flush_timings_secs":5,
|
||||
"enable_user_directory":true,
|
||||
"tos_url":"",
|
||||
"privacy_policy_url":"",
|
||||
"tos_accept_required":false,
|
||||
|
||||
@@ -75,7 +75,7 @@ if (window.Logster) {
|
||||
|
||||
var origDebounce = Ember.run.debounce,
|
||||
createPretendServer = require('helpers/create-pretender', null, null, false).default,
|
||||
fixtures = require('fixtures/site_fixtures', null, null, false).default,
|
||||
fixtures = require('fixtures/site-fixtures', null, null, false).default,
|
||||
flushMap = require('discourse/models/store', null, null, false).flushMap,
|
||||
ScrollingDOMMethods = require('discourse/mixins/scrolling', null, null, false).ScrollingDOMMethods,
|
||||
_DiscourseURL = require('discourse/lib/url', null, null, false).default,
|
||||
|
||||
Reference in New Issue
Block a user