snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
This commit is contained in:
133
web/tests/emoji.test.cjs
Normal file
133
web/tests/emoji.test.cjs
Normal file
@@ -0,0 +1,133 @@
|
||||
"use strict";
|
||||
|
||||
const assert = require("node:assert/strict");
|
||||
|
||||
const events = require("./lib/events.cjs");
|
||||
const {zrequire} = require("./lib/namespace.cjs");
|
||||
const {run_test} = require("./lib/test.cjs");
|
||||
const blueslip = require("./lib/zblueslip.cjs");
|
||||
|
||||
const emoji_codes = zrequire("../../static/generated/emoji/emoji_codes.json");
|
||||
|
||||
const emoji = zrequire("emoji");
|
||||
|
||||
const realm_emoji = events.test_realm_emojis;
|
||||
|
||||
run_test("sanity check", () => {
|
||||
// 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});
|
||||
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: "1f604",
|
||||
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: "1f604",
|
||||
});
|
||||
|
||||
// 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",
|
||||
},
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user