mirror of
https://github.com/discourse/discourse.git
synced 2024-12-13 12:43:43 +08:00
84c1cc70d6
- better handling of drawer state using chat state manager - removes various float and topic occurrences to use drawer - ensures user can chat before doing a lot of chat setup - fixes a bug which was creating presence errors in tests - removes dead code
134 lines
3.7 KiB
JavaScript
134 lines
3.7 KiB
JavaScript
import { module, test } from "qunit";
|
|
import { setupTest } from "ember-qunit";
|
|
import Site from "discourse/models/site";
|
|
import sinon from "sinon";
|
|
|
|
module(
|
|
"Discourse Chat | Unit | Service | chat-state-manager",
|
|
function (hooks) {
|
|
setupTest(hooks);
|
|
|
|
hooks.beforeEach(function () {
|
|
this.subject = this.owner.lookup("service:chat-state-manager");
|
|
});
|
|
|
|
hooks.afterEach(function () {
|
|
this.subject.reset();
|
|
});
|
|
|
|
test("isFullPagePreferred", function (assert) {
|
|
assert.notOk(this.subject.isFullPagePreferred);
|
|
|
|
this.subject.prefersFullPage();
|
|
|
|
assert.ok(this.subject.isFullPagePreferred);
|
|
|
|
this.subject.prefersDrawer();
|
|
|
|
assert.notOk(this.subject.isFullPagePreferred);
|
|
|
|
this.subject.prefersDrawer();
|
|
Site.currentProp("mobileView", true);
|
|
|
|
assert.ok(this.subject.isFullPagePreferred);
|
|
});
|
|
|
|
test("isDrawerPreferred", function (assert) {
|
|
assert.ok(this.subject.isDrawerPreferred);
|
|
|
|
this.subject.prefersFullPage();
|
|
|
|
assert.notOk(this.subject.isDrawerPreferred);
|
|
|
|
this.subject.prefersDrawer();
|
|
|
|
assert.ok(this.subject.isDrawerPreferred);
|
|
});
|
|
|
|
test("lastKnownChatURL", function (assert) {
|
|
assert.strictEqual(this.subject.lastKnownChatURL, "/chat");
|
|
|
|
sinon.stub(this.subject.router, "currentURL").value("/foo");
|
|
this.subject.storeChatURL();
|
|
|
|
assert.strictEqual(this.subject.lastKnownChatURL, "/foo");
|
|
|
|
this.subject.storeChatURL("/bar");
|
|
|
|
assert.strictEqual(this.subject.lastKnownChatURL, "/bar");
|
|
});
|
|
|
|
test("lastKnownAppURL", function (assert) {
|
|
assert.strictEqual(this.subject.lastKnownAppURL, "/latest");
|
|
|
|
sinon.stub(this.subject.router, "currentURL").value("/foo");
|
|
this.subject.storeAppURL();
|
|
|
|
assert.strictEqual(this.subject.lastKnownAppURL, "/foo");
|
|
|
|
this.subject.storeAppURL("/bar");
|
|
|
|
assert.strictEqual(this.subject.lastKnownAppURL, "/bar");
|
|
});
|
|
|
|
test("isFullPageActive", function (assert) {
|
|
sinon.stub(this.subject.router, "currentRouteName").value("foo");
|
|
assert.notOk(this.subject.isFullPageActive);
|
|
|
|
sinon.stub(this.subject.router, "currentRouteName").value("chat");
|
|
assert.ok(this.subject.isFullPageActive);
|
|
});
|
|
|
|
test("didCollapseDrawer", function (assert) {
|
|
this.subject.didCollapseDrawer();
|
|
|
|
assert.strictEqual(this.subject.isDrawerExpanded, false);
|
|
assert.strictEqual(this.subject.isDrawerActive, true);
|
|
});
|
|
|
|
test("didExpandDrawer", function (assert) {
|
|
const stub = sinon.stub(
|
|
this.owner.lookup("service:chat"),
|
|
"updatePresence"
|
|
);
|
|
|
|
this.subject.didExpandDrawer();
|
|
|
|
assert.strictEqual(this.subject.isDrawerExpanded, true);
|
|
assert.strictEqual(this.subject.isDrawerActive, true);
|
|
sinon.assert.calledOnce(stub);
|
|
});
|
|
|
|
test("didCloseDrawer", function (assert) {
|
|
const stub = sinon.stub(
|
|
this.owner.lookup("service:chat"),
|
|
"updatePresence"
|
|
);
|
|
|
|
this.subject.didCloseDrawer();
|
|
|
|
assert.strictEqual(this.subject.isDrawerExpanded, false);
|
|
assert.strictEqual(this.subject.isDrawerActive, false);
|
|
sinon.assert.calledOnce(stub);
|
|
});
|
|
|
|
test("didOpenDrawer", function (assert) {
|
|
const stub = sinon.stub(
|
|
this.owner.lookup("service:chat"),
|
|
"updatePresence"
|
|
);
|
|
|
|
this.subject.didOpenDrawer();
|
|
|
|
assert.strictEqual(this.subject.isDrawerExpanded, true);
|
|
assert.strictEqual(this.subject.isDrawerActive, true);
|
|
assert.strictEqual(this.subject.lastKnownChatURL, "/chat");
|
|
|
|
this.subject.didOpenDrawer("/foo");
|
|
|
|
assert.strictEqual(this.subject.lastKnownChatURL, "/foo");
|
|
sinon.assert.calledTwice(stub);
|
|
});
|
|
}
|
|
);
|