mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 21:43:21 +00:00
The mobile app was never able to use the shared version of emoji.js, because, among other problems with our code organization, the emoji.js module is strongly based on a mutate-the-data paradigm that doesn't play nice with React. The way that we mutate data and violate encapsuation here is something that we would mostly want to fix without even trying to shared code with mobile, so subsequent commits will try to extract some pure functions into a shared module.
126 lines
3.5 KiB
JavaScript
126 lines
3.5 KiB
JavaScript
"use strict";
|
|
|
|
const {strict: assert} = require("assert");
|
|
|
|
const {zrequire} = require("../zjsunit/namespace");
|
|
const {run_test} = require("../zjsunit/test");
|
|
|
|
const emoji_codes = zrequire("../generated/emoji/emoji_codes.json");
|
|
|
|
const events = require("./lib/events");
|
|
|
|
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",
|
|
});
|
|
|
|
// 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",
|
|
});
|
|
|
|
// 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",
|
|
},
|
|
);
|
|
});
|