discourse/plugins/chat/test/javascripts/unit/services/chat-emoji-picker-manager-t...

181 lines
5.2 KiB
JavaScript

import { module, test } from "qunit";
import { getOwner } from "discourse-common/lib/get-owner";
import pretender from "discourse/tests/helpers/create-pretender";
import { settled } from "@ember/test-helpers";
function emojisReponse() {
return { favorites: [{ name: "sad" }] };
}
module(
"Discourse Chat | Unit | Service | chat-emoji-picker-manager",
function (hooks) {
hooks.beforeEach(function () {
pretender.get("/chat/emojis.json", () => {
return [200, {}, emojisReponse()];
});
this.manager = getOwner(this).lookup("service:chat-emoji-picker-manager");
});
hooks.afterEach(function () {
this.manager.close();
});
test("startFromMessageReactionList", async function (assert) {
const callback = () => {};
this.manager.startFromMessageReactionList({ id: 1 }, false, callback);
assert.ok(this.manager.loading);
assert.ok(this.manager.opened);
assert.strictEqual(this.manager.context, "chat-message");
assert.strictEqual(this.manager.callback, callback);
assert.deepEqual(this.manager.visibleSections, [
"favorites",
"smileys_&_emotion",
]);
assert.strictEqual(this.manager.lastVisibleSection, "favorites");
await settled();
assert.deepEqual(this.manager.emojis, emojisReponse());
assert.strictEqual(this.manager.loading, false);
});
test("startFromMessageActions", async function (assert) {
const callback = () => {};
this.manager.startFromMessageReactionList({ id: 1 }, false, callback);
assert.ok(this.manager.loading);
assert.ok(this.manager.opened);
assert.strictEqual(this.manager.context, "chat-message");
assert.strictEqual(this.manager.callback, callback);
assert.deepEqual(this.manager.visibleSections, [
"favorites",
"smileys_&_emotion",
]);
assert.strictEqual(this.manager.lastVisibleSection, "favorites");
await settled();
assert.deepEqual(this.manager.emojis, emojisReponse());
assert.strictEqual(this.manager.loading, false);
});
test("addVisibleSections", async function (assert) {
this.manager.addVisibleSections(["favorites", "objects"]);
assert.deepEqual(this.manager.visibleSections, [
"favorites",
"smileys_&_emotion",
"objects",
]);
});
test("sections", async function (assert) {
assert.deepEqual(this.manager.sections, []);
this.manager.startFromComposer(() => {});
assert.deepEqual(this.manager.sections, []);
await settled();
assert.deepEqual(this.manager.sections, ["favorites"]);
});
test("startFromComposer", async function (assert) {
const callback = () => {};
this.manager.startFromComposer(callback);
assert.ok(this.manager.loading);
assert.ok(this.manager.opened);
assert.strictEqual(this.manager.context, "chat-composer");
assert.strictEqual(this.manager.callback, callback);
assert.deepEqual(this.manager.visibleSections, [
"favorites",
"smileys_&_emotion",
]);
assert.strictEqual(this.manager.lastVisibleSection, "favorites");
await settled();
assert.deepEqual(this.manager.emojis, emojisReponse());
assert.strictEqual(this.manager.loading, false);
});
test("closeExisting", async function (assert) {
const callback = () => {
return;
};
this.manager.startFromComposer(() => {});
this.manager.addVisibleSections("objects");
this.manager.lastVisibleSection = "objects";
this.manager.startFromComposer(callback);
assert.strictEqual(
this.manager.callback,
callback,
"it resets the callback to latest picker"
);
assert.deepEqual(
this.manager.visibleSections,
["favorites", "smileys_&_emotion"],
"it resets sections"
);
assert.strictEqual(
this.manager.lastVisibleSection,
"favorites",
"it resets last visible section"
);
});
test("didSelectEmoji", async function (assert) {
let value;
const callback = (emoji) => {
value = emoji.name;
};
this.manager.startFromComposer(callback);
this.manager.didSelectEmoji({ name: "joy" });
assert.notOk(this.manager.callback);
assert.strictEqual(value, "joy");
await settled();
assert.notOk(this.manager.opened, "it closes the picker after selection");
});
test("close", async function (assert) {
this.manager.startFromComposer(() => {});
assert.ok(this.manager.opened);
assert.ok(this.manager.callback);
this.manager.addVisibleSections("objects");
this.manager.lastVisibleSection = "objects";
this.manager.close();
assert.notOk(this.manager.callback);
assert.ok(this.manager.closing);
assert.ok(this.manager.opened);
await settled();
assert.notOk(this.manager.opened);
assert.notOk(this.manager.closing);
assert.deepEqual(
this.manager.visibleSections,
["favorites", "smileys_&_emotion"],
"it resets visible sections"
);
assert.strictEqual(
this.manager.lastVisibleSection,
"favorites",
"it resets last visible section"
);
});
}
);