2020-08-01 03:43:15 +02:00
|
|
|
"use strict";
|
|
|
|
|
2024-10-09 00:25:41 +02:00
|
|
|
const assert = require("node:assert/strict");
|
2020-11-30 23:46:45 +01:00
|
|
|
|
2023-02-22 23:04:10 +01:00
|
|
|
const events = require("./lib/events");
|
|
|
|
const {zrequire} = require("./lib/namespace");
|
|
|
|
const {run_test} = require("./lib/test");
|
2023-03-26 08:46:21 +02:00
|
|
|
const blueslip = require("./lib/zblueslip");
|
2020-12-01 00:02:16 +01:00
|
|
|
|
2023-02-22 23:03:47 +01:00
|
|
|
const emoji_codes = zrequire("../../static/generated/emoji/emoji_codes.json");
|
2020-07-25 23:59:49 +02:00
|
|
|
|
2022-03-25 14:47:51 +01:00
|
|
|
const emoji = zrequire("emoji");
|
2017-06-25 22:45:47 +02:00
|
|
|
|
2020-08-05 19:04:27 +02:00
|
|
|
const realm_emoji = events.test_realm_emojis;
|
2020-07-25 03:26:58 +02:00
|
|
|
|
|
|
|
run_test("sanity check", () => {
|
2023-03-26 08:46:21 +02:00
|
|
|
// Invalid emoji data
|
|
|
|
emoji_codes.names = [...emoji_codes.names, "invalid_emoji"];
|
|
|
|
blueslip.expect("error", "No codepoint for emoji name invalid_emoji");
|
|
|
|
emoji.initialize({realm_emoji, emoji_codes});
|
|
|
|
|
|
|
|
// Valid data
|
|
|
|
emoji_codes.names = emoji_codes.names.filter((name) => name !== "invalid_emoji");
|
|
|
|
emoji.initialize({realm_emoji, emoji_codes});
|
2020-07-25 23:59:49 +02:00
|
|
|
assert.equal(emoji.get_server_realm_emoji_data(), realm_emoji);
|
2020-07-25 03:26:58 +02:00
|
|
|
});
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
run_test("get_canonical_name", () => {
|
2020-07-25 03:26:58 +02:00
|
|
|
let canonical_name = emoji.get_canonical_name("green_tick");
|
|
|
|
assert.equal(canonical_name, "green_tick");
|
2017-09-29 22:14:57 +02:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
canonical_name = emoji.get_canonical_name("thumbs_up");
|
|
|
|
assert.equal(canonical_name, "+1");
|
2017-09-29 22:14:57 +02:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
canonical_name = emoji.get_canonical_name("+1");
|
|
|
|
assert.equal(canonical_name, "+1");
|
2017-09-29 22:14:57 +02:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
canonical_name = emoji.get_canonical_name("airplane");
|
|
|
|
assert.equal(canonical_name, "airplane");
|
2020-02-06 07:07:10 +01:00
|
|
|
|
2020-07-24 23:30:57 +02:00
|
|
|
canonical_name = emoji.get_canonical_name("non_existent");
|
|
|
|
assert.equal(canonical_name, undefined);
|
2018-05-15 12:40:07 +02:00
|
|
|
});
|
2020-02-15 13:19:42 +01:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
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);
|
2020-02-15 13:19:42 +01:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
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);
|
2020-02-15 13:19:42 +01:00
|
|
|
|
2021-08-12 10:20:50 +02:00
|
|
|
assert.equal(emoji.get_realm_emoji_url("spain"), "/some/path/to/spain.gif");
|
2020-02-15 13:19:42 +01:00
|
|
|
});
|
2021-07-26 12:43:55 +02:00
|
|
|
|
|
|
|
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",
|
2023-04-05 12:51:26 +02:00
|
|
|
still_url: null,
|
2021-07-26 12:43:55 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
// 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",
|
2021-08-12 10:20:50 +02:00
|
|
|
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",
|
2023-04-05 12:51:26 +02:00
|
|
|
still_url: null,
|
2021-07-26 12:43:55 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
// 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",
|
|
|
|
},
|
|
|
|
);
|
|
|
|
});
|