mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
This is a prep commit for typescript migration of `emoji.js`. This commit refactors the code for generating emoji rendering details such that we avoid writing an ugly code which will involve writing an incomplete type object when we migrate to TypeScript.
127 lines
3.6 KiB
JavaScript
127 lines
3.6 KiB
JavaScript
"use strict";
|
|
|
|
const {strict: assert} = require("assert");
|
|
|
|
const events = require("./lib/events");
|
|
const {zrequire} = require("./lib/namespace");
|
|
const {run_test} = require("./lib/test");
|
|
|
|
const emoji_codes = zrequire("../../static/generated/emoji/emoji_codes.json");
|
|
|
|
const emoji = zrequire("emoji");
|
|
|
|
const realm_emoji = events.test_realm_emojis;
|
|
|
|
emoji.initialize({realm_emoji, emoji_codes});
|
|
|
|
run_test("sanity check", () => {
|
|
assert.equal(emoji.get_server_realm_emoji_data(), realm_emoji);
|
|
});
|
|
|
|
run_test("get_canonical_name", () => {
|
|
let canonical_name = emoji.get_canonical_name("green_tick");
|
|
assert.equal(canonical_name, "green_tick");
|
|
|
|
canonical_name = emoji.get_canonical_name("thumbs_up");
|
|
assert.equal(canonical_name, "+1");
|
|
|
|
canonical_name = emoji.get_canonical_name("+1");
|
|
assert.equal(canonical_name, "+1");
|
|
|
|
canonical_name = emoji.get_canonical_name("airplane");
|
|
assert.equal(canonical_name, "airplane");
|
|
|
|
canonical_name = emoji.get_canonical_name("non_existent");
|
|
assert.equal(canonical_name, undefined);
|
|
});
|
|
|
|
run_test("get_emoji_* API", () => {
|
|
assert.equal(emoji.get_emoji_name("1f384"), "holiday_tree");
|
|
assert.equal(emoji.get_emoji_name("1f951"), "avocado");
|
|
assert.equal(emoji.get_emoji_name("bogus"), undefined);
|
|
|
|
assert.equal(emoji.get_emoji_codepoint("avocado"), "1f951");
|
|
assert.equal(emoji.get_emoji_codepoint("holiday_tree"), "1f384");
|
|
assert.equal(emoji.get_emoji_codepoint("bogus"), undefined);
|
|
|
|
assert.equal(emoji.get_realm_emoji_url("spain"), "/some/path/to/spain.gif");
|
|
});
|
|
|
|
run_test("get_emoji_details_by_name", () => {
|
|
let emoji_name = "smile";
|
|
|
|
let result = emoji.get_emoji_details_by_name(emoji_name);
|
|
assert.deepEqual(result, {
|
|
emoji_name: "smile",
|
|
emoji_code: "1f642",
|
|
reaction_type: "unicode_emoji",
|
|
});
|
|
|
|
// Test adding an unicode_emoji.
|
|
emoji_name = "smile";
|
|
|
|
result = emoji.get_emoji_details_by_name(emoji_name);
|
|
assert.deepEqual(result, {
|
|
emoji_name: "smile",
|
|
reaction_type: "unicode_emoji",
|
|
emoji_code: "1f642",
|
|
});
|
|
|
|
// Test adding zulip emoji.
|
|
emoji_name = "zulip";
|
|
|
|
result = emoji.get_emoji_details_by_name(emoji_name);
|
|
assert.deepEqual(result, {
|
|
emoji_name: "zulip",
|
|
reaction_type: "zulip_extra_emoji",
|
|
emoji_code: "zulip",
|
|
url: "/static/generated/emoji/images/emoji/unicode/zulip.png",
|
|
still_url: null,
|
|
});
|
|
|
|
// Test adding realm emoji.
|
|
emoji_name = "spain";
|
|
|
|
emoji_name = emoji.get_emoji_details_by_name(emoji_name);
|
|
assert.deepEqual(emoji_name, {
|
|
emoji_name: "spain",
|
|
reaction_type: "realm_emoji",
|
|
emoji_code: "101",
|
|
url: "/some/path/to/spain.gif",
|
|
still_url: "/some/path/to/spain.png",
|
|
});
|
|
|
|
emoji_name = "green_tick";
|
|
emoji_name = emoji.get_emoji_details_by_name(emoji_name);
|
|
assert.deepEqual(emoji_name, {
|
|
emoji_name: "green_tick",
|
|
reaction_type: "realm_emoji",
|
|
emoji_code: "102",
|
|
url: "/some/path/to/emoji",
|
|
still_url: null,
|
|
});
|
|
|
|
// Test sending without emoji name.
|
|
assert.throws(
|
|
() => {
|
|
emoji.get_emoji_details_by_name();
|
|
},
|
|
{
|
|
name: "Error",
|
|
message: "Emoji name must be passed.",
|
|
},
|
|
);
|
|
|
|
// Test sending an unknown emoji.
|
|
emoji_name = "unknown-emoji";
|
|
assert.throws(
|
|
() => {
|
|
emoji.get_emoji_details_by_name(emoji_name);
|
|
},
|
|
{
|
|
name: "Error",
|
|
message: "Bad emoji name: unknown-emoji",
|
|
},
|
|
);
|
|
});
|