85 lines
3.3 KiB
JavaScript
85 lines
3.3 KiB
JavaScript
import {
|
|
currentUser,
|
|
discourseModule,
|
|
} from "discourse/tests/helpers/qunit-helpers";
|
|
import DocumentTitle from "discourse/services/document-title";
|
|
import AppEvents from "discourse/services/app-events";
|
|
import Session from "discourse/models/session";
|
|
import { test } from "qunit";
|
|
|
|
discourseModule("Unit | Service | document-title", function (hooks) {
|
|
hooks.beforeEach(function () {
|
|
const session = Session.current();
|
|
session.hasFocus = true;
|
|
|
|
this.documentTitle = DocumentTitle.create({
|
|
session,
|
|
appEvents: AppEvents.create(),
|
|
});
|
|
this.documentTitle.currentUser = null;
|
|
});
|
|
|
|
hooks.afterEach(function () {
|
|
this.documentTitle.reset();
|
|
});
|
|
|
|
test("it updates the document title", function (assert) {
|
|
this.documentTitle.setTitle("Test Title");
|
|
assert.strictEqual(document.title, "Test Title", "title is correct");
|
|
});
|
|
|
|
test("it doesn't display notification counts for anonymous users", function (assert) {
|
|
this.documentTitle.setTitle("test notifications");
|
|
this.documentTitle.updateNotificationCount(5);
|
|
assert.strictEqual(document.title, "test notifications");
|
|
this.documentTitle.setFocus(false);
|
|
this.documentTitle.updateNotificationCount(6);
|
|
assert.strictEqual(document.title, "test notifications");
|
|
});
|
|
|
|
test("it displays notification counts for logged in users", function (assert) {
|
|
this.documentTitle.currentUser = currentUser();
|
|
this.documentTitle.currentUser.dynamic_favicon = false;
|
|
this.documentTitle.setTitle("test notifications");
|
|
this.documentTitle.updateNotificationCount(5);
|
|
assert.strictEqual(document.title, "test notifications");
|
|
this.documentTitle.setFocus(false);
|
|
this.documentTitle.updateNotificationCount(6);
|
|
assert.strictEqual(document.title, "(6) test notifications");
|
|
this.documentTitle.setFocus(true);
|
|
assert.strictEqual(document.title, "test notifications");
|
|
});
|
|
|
|
test("it doesn't display notification counts for users in do not disturb", function (assert) {
|
|
this.documentTitle.currentUser = currentUser();
|
|
|
|
const date = new Date();
|
|
date.setHours(date.getHours() + 1);
|
|
this.documentTitle.currentUser.do_not_disturb_until = date.toUTCString();
|
|
|
|
this.documentTitle.currentUser.dynamic_favicon = false;
|
|
this.documentTitle.setTitle("test notifications");
|
|
this.documentTitle.updateNotificationCount(5);
|
|
assert.strictEqual(document.title, "test notifications");
|
|
this.documentTitle.setFocus(false);
|
|
this.documentTitle.updateNotificationCount(6);
|
|
assert.strictEqual(document.title, "test notifications");
|
|
});
|
|
|
|
test("it doesn't increment background context counts when focused", function (assert) {
|
|
this.documentTitle.setTitle("background context");
|
|
this.documentTitle.setFocus(true);
|
|
this.documentTitle.incrementBackgroundContextCount();
|
|
assert.strictEqual(document.title, "background context");
|
|
});
|
|
|
|
test("it increments background context counts when not focused", function (assert) {
|
|
this.documentTitle.setTitle("background context");
|
|
this.documentTitle.setFocus(false);
|
|
this.documentTitle.incrementBackgroundContextCount();
|
|
assert.strictEqual(document.title, "(1) background context");
|
|
this.documentTitle.setFocus(true);
|
|
assert.strictEqual(document.title, "background context");
|
|
});
|
|
});
|