mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			138 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const noop = () => {};
 | 
						|
 | 
						|
set_global("$", global.make_zjquery());
 | 
						|
const input = $.create("input");
 | 
						|
set_global("document", {
 | 
						|
    createElement: () => input,
 | 
						|
    execCommand: noop,
 | 
						|
});
 | 
						|
 | 
						|
$("body").append = noop;
 | 
						|
$(input).val = (arg) => {
 | 
						|
    assert.equal(arg, "iago@zulip.com");
 | 
						|
    return {
 | 
						|
        trigger: noop,
 | 
						|
    };
 | 
						|
};
 | 
						|
 | 
						|
zrequire("common");
 | 
						|
 | 
						|
function get_key_stub_html(key_text, expected_key, obj_name) {
 | 
						|
    const key_stub = $.create(obj_name);
 | 
						|
    key_stub.text(key_text);
 | 
						|
    key_stub.expected_key = function () {
 | 
						|
        return expected_key;
 | 
						|
    };
 | 
						|
    return key_stub;
 | 
						|
}
 | 
						|
 | 
						|
run_test("basics", () => {
 | 
						|
    common.autofocus("#home");
 | 
						|
    assert($("#home").is_focused());
 | 
						|
});
 | 
						|
 | 
						|
run_test("phrase_match", () => {
 | 
						|
    assert(common.phrase_match("tes", "test"));
 | 
						|
    assert(common.phrase_match("Tes", "test"));
 | 
						|
    assert(common.phrase_match("Tes", "Test"));
 | 
						|
    assert(common.phrase_match("tes", "Stream Test"));
 | 
						|
 | 
						|
    assert(!common.phrase_match("tests", "test"));
 | 
						|
    assert(!common.phrase_match("tes", "hostess"));
 | 
						|
});
 | 
						|
 | 
						|
run_test("copy_data_attribute_value", () => {
 | 
						|
    const elem = $.create(".envelope-link");
 | 
						|
    elem.data = (key) => {
 | 
						|
        if (key === "admin-emails") {
 | 
						|
            return "iago@zulip.com";
 | 
						|
        }
 | 
						|
        return "";
 | 
						|
    };
 | 
						|
    elem.fadeOut = (val) => {
 | 
						|
        assert.equal(val, 250);
 | 
						|
    };
 | 
						|
    elem.fadeIn = (val) => {
 | 
						|
        assert.equal(val, 1000);
 | 
						|
    };
 | 
						|
    common.copy_data_attribute_value(elem, "admin-emails");
 | 
						|
});
 | 
						|
 | 
						|
run_test("adjust_mac_shortcuts", () => {
 | 
						|
    const keys_to_test_mac = new Map([
 | 
						|
        ["Backspace", "Delete"],
 | 
						|
        ["Enter", "Return"],
 | 
						|
        ["Home", "Fn + ←"],
 | 
						|
        ["End", "Fn + →"],
 | 
						|
        ["PgUp", "Fn + ↑"],
 | 
						|
        ["PgDn", "Fn + ↓"],
 | 
						|
        ["X + Shift", "X + Shift"],
 | 
						|
        ["⌘ + Return", "⌘ + Return"],
 | 
						|
        ["Enter or Backspace", "Return or Delete"],
 | 
						|
        ["Ctrl", "⌘"],
 | 
						|
        ["Ctrl + Shift", "⌘ + Shift"],
 | 
						|
        ["Ctrl + Backspace + End", "⌘ + Delete + Fn + →"],
 | 
						|
    ]);
 | 
						|
    const keys_to_test_non_mac = new Map([
 | 
						|
        ["Backspace", "Backspace"],
 | 
						|
        ["Enter", "Enter"],
 | 
						|
        ["Home", "Home"],
 | 
						|
        ["End", "End"],
 | 
						|
        ["PgUp", "PgUp"],
 | 
						|
        ["PgDn", "PgDn"],
 | 
						|
        ["X + Shift", "X + Shift"],
 | 
						|
        ["⌘ + Return", "⌘ + Return"],
 | 
						|
        ["Ctrl + Shift", "Ctrl + Shift"],
 | 
						|
        ["Ctrl + Backspace + End", "Ctrl + Backspace + End"],
 | 
						|
    ]);
 | 
						|
 | 
						|
    let key_no;
 | 
						|
    let keys_elem_list = [];
 | 
						|
 | 
						|
    common.has_mac_keyboard = function () {
 | 
						|
        return false;
 | 
						|
    };
 | 
						|
    key_no = 1;
 | 
						|
    keys_to_test_non_mac.forEach((value, key) => {
 | 
						|
        keys_elem_list.push(get_key_stub_html(key, value, "hotkey_non_mac_" + key_no));
 | 
						|
        key_no += 1;
 | 
						|
    });
 | 
						|
 | 
						|
    common.adjust_mac_shortcuts(".markdown_content");
 | 
						|
    keys_elem_list.forEach((key_elem) => {
 | 
						|
        assert(key_elem.text(), key_elem.expected_key());
 | 
						|
    });
 | 
						|
 | 
						|
    keys_elem_list = [];
 | 
						|
    key_no = 1;
 | 
						|
    common.has_mac_keyboard = function () {
 | 
						|
        return true;
 | 
						|
    };
 | 
						|
    keys_to_test_mac.forEach((value, key) => {
 | 
						|
        keys_elem_list.push(get_key_stub_html(key, value, "hotkey_" + key_no));
 | 
						|
        key_no += 1;
 | 
						|
    });
 | 
						|
 | 
						|
    $(".markdown_content").each = (f) => {
 | 
						|
        for (let key_id = 0; key_id < keys_elem_list.length; key_id += 1) {
 | 
						|
            f.call(keys_elem_list[key_id]);
 | 
						|
        }
 | 
						|
    };
 | 
						|
    common.adjust_mac_shortcuts(".markdown_content");
 | 
						|
    keys_elem_list.forEach((key_elem) => {
 | 
						|
        assert.equal(key_elem.text(), key_elem.expected_key());
 | 
						|
    });
 | 
						|
 | 
						|
    const markdown_hotkey_1 = get_key_stub_html(
 | 
						|
        "Ctrl + Backspace",
 | 
						|
        "⌘ + Delete",
 | 
						|
        "markdown_hotkey_1",
 | 
						|
    );
 | 
						|
    $(".markdown_content").each = (f) => {
 | 
						|
        f.call(markdown_hotkey_1);
 | 
						|
    };
 | 
						|
    common.adjust_mac_shortcuts(".markdown_content", true);
 | 
						|
    assert.equal(markdown_hotkey_1.text(), markdown_hotkey_1.expected_key());
 | 
						|
    assert.equal(markdown_hotkey_1.hasClass("mac-cmd-key"), true);
 | 
						|
});
 |