import { module, test } from "qunit";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import { render } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
function getTitleCount() {
const match = document.title.match(/^\((\d+)\)\s/);
if (match) {
return parseInt(match[1], 10);
} else {
return null;
}
}
function triggerTitleUpdate(appEvents) {
appEvents.trigger("notifications:changed", { forced: true });
}
module("Integration | Component | d-document", function (hooks) {
setupRenderingTest(hooks);
test("when experimental user menu is enabled", async function (assert) {
const titleBefore = document.title;
try {
this.currentUser.redesigned_user_menu_enabled = true;
this.currentUser.user_option.title_count_mode = "notifications";
await render(hbs``);
assert.strictEqual(
getTitleCount(),
null,
"title doesn't have a count initially"
);
this.currentUser.unread_high_priority_notifications = 1;
this.currentUser.unread_notifications = 2;
this.currentUser.all_unread_notifications_count = 4;
this.currentUser.unseen_reviewable_count = 8;
triggerTitleUpdate(this.currentUser.appEvents);
assert.strictEqual(
getTitleCount(),
12,
"count in the title is the sum of all_unread_notifications_count and unseen_reviewable_count"
);
} finally {
document.title = titleBefore;
}
});
test("when experimental user menu is disabled", async function (assert) {
const titleBefore = document.title;
try {
this.currentUser.redesigned_user_menu_enabled = false;
this.currentUser.user_option.title_count_mode = "notifications";
await render(hbs``);
assert.strictEqual(
getTitleCount(),
null,
"title doesn't have a count initially"
);
this.currentUser.unread_high_priority_notifications = 1;
this.currentUser.unread_notifications = 2;
this.currentUser.all_unread_notifications_count = 4;
this.currentUser.unseen_reviewable_count = 8;
triggerTitleUpdate(this.currentUser.appEvents);
assert.strictEqual(
getTitleCount(),
3,
"count in the title is the sum of unread_notifications and unread_high_priority_notifications"
);
} finally {
document.title = titleBefore;
}
});
});