mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
const assert = require("node:assert/strict");
 | 
						|
 | 
						|
const _ = require("lodash");
 | 
						|
 | 
						|
const {zrequire, set_global} = require("./lib/namespace.cjs");
 | 
						|
const {run_test} = require("./lib/test.cjs");
 | 
						|
 | 
						|
const emoji = zrequire("emoji");
 | 
						|
const emoji_picker = zrequire("emoji_picker");
 | 
						|
 | 
						|
const emoji_codes = zrequire("../../static/generated/emoji/emoji_codes.json");
 | 
						|
 | 
						|
set_global("document", "document-stub");
 | 
						|
 | 
						|
run_test("initialize", () => {
 | 
						|
    emoji.initialize({
 | 
						|
        realm_emoji: {},
 | 
						|
        emoji_codes,
 | 
						|
    });
 | 
						|
    emoji_picker.initialize();
 | 
						|
 | 
						|
    const complete_emoji_catalog = _.sortBy(emoji_picker.complete_emoji_catalog, "name");
 | 
						|
    assert.equal(complete_emoji_catalog.length, 11);
 | 
						|
    assert.equal(emoji.emojis_by_name.size, 1876);
 | 
						|
 | 
						|
    let total_emoji_in_categories = 0;
 | 
						|
 | 
						|
    function assert_emoji_category(ele, icon, num) {
 | 
						|
        assert.equal(ele.icon, icon);
 | 
						|
        assert.equal(ele.emojis.length, num);
 | 
						|
        function check_emojis(val) {
 | 
						|
            for (const this_emoji of ele.emojis) {
 | 
						|
                assert.equal(this_emoji.is_realm_emoji, val);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        if (ele.name === "Custom") {
 | 
						|
            check_emojis(true);
 | 
						|
        } else {
 | 
						|
            check_emojis(false);
 | 
						|
            total_emoji_in_categories += ele.emojis.length;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    const popular_emoji_count = 6;
 | 
						|
    const zulip_emoji_count = 1;
 | 
						|
    assert_emoji_category(complete_emoji_catalog.pop(), "fa-car", 195);
 | 
						|
    assert_emoji_category(complete_emoji_catalog.pop(), "fa-hashtag", 223);
 | 
						|
    assert_emoji_category(complete_emoji_catalog.pop(), "fa-smile-o", 168);
 | 
						|
    assert_emoji_category(complete_emoji_catalog.pop(), "fa-star-o", popular_emoji_count);
 | 
						|
    assert_emoji_category(complete_emoji_catalog.pop(), "fa-thumbs-o-up", 385);
 | 
						|
    assert_emoji_category(complete_emoji_catalog.pop(), "fa-lightbulb-o", 262);
 | 
						|
    assert_emoji_category(complete_emoji_catalog.pop(), "fa-cutlery", 135);
 | 
						|
    assert_emoji_category(complete_emoji_catalog.pop(), "fa-flag", 269);
 | 
						|
    assert_emoji_category(complete_emoji_catalog.pop(), "fa-cog", 1);
 | 
						|
    assert_emoji_category(complete_emoji_catalog.pop(), "fa-leaf", 153);
 | 
						|
    assert_emoji_category(complete_emoji_catalog.pop(), "fa-soccer-ball-o", 85);
 | 
						|
 | 
						|
    // The popular emoji appear twice in the picker, and the zulip emoji is special
 | 
						|
    assert.equal(
 | 
						|
        emoji.emojis_by_name.size,
 | 
						|
        total_emoji_in_categories - popular_emoji_count + zulip_emoji_count,
 | 
						|
    );
 | 
						|
});
 | 
						|
 | 
						|
run_test("is_emoji_present_in_text", () => {
 | 
						|
    const thermometer_emoji = {
 | 
						|
        name: "thermometer",
 | 
						|
        emoji_code: "1f321",
 | 
						|
        reaction_type: "unicode_emoji",
 | 
						|
    };
 | 
						|
    const headphones_emoji = {
 | 
						|
        name: "headphones",
 | 
						|
        emoji_code: "1f3a7",
 | 
						|
        reaction_type: "unicode_emoji",
 | 
						|
    };
 | 
						|
    assert.equal(emoji_picker.is_emoji_present_in_text("🌡", thermometer_emoji), true);
 | 
						|
    assert.equal(
 | 
						|
        emoji_picker.is_emoji_present_in_text("no emojis at all", thermometer_emoji),
 | 
						|
        false,
 | 
						|
    );
 | 
						|
    assert.equal(emoji_picker.is_emoji_present_in_text("😎", thermometer_emoji), false);
 | 
						|
    assert.equal(emoji_picker.is_emoji_present_in_text("😎🌡🎧", thermometer_emoji), true);
 | 
						|
    assert.equal(emoji_picker.is_emoji_present_in_text("😎🎧", thermometer_emoji), false);
 | 
						|
    assert.equal(emoji_picker.is_emoji_present_in_text("😎🌡🎧", headphones_emoji), true);
 | 
						|
    assert.equal(
 | 
						|
        emoji_picker.is_emoji_present_in_text("emojis with text 😎🌡🎧", thermometer_emoji),
 | 
						|
        true,
 | 
						|
    );
 | 
						|
    assert.equal(
 | 
						|
        emoji_picker.is_emoji_present_in_text("emojis with text no space😎🌡🎧", headphones_emoji),
 | 
						|
        true,
 | 
						|
    );
 | 
						|
});
 |