mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	zjquery: Avoid array-related hacks.
Callers can either explicitly pass in children, stub out $(...)[0] as needed, or just circumvent jQuery complications with override. Note the reactions test was broken before, since $(...)[0] was always returning the same stub.
This commit is contained in:
		
				
					committed by
					
						
						Steve Howell
					
				
			
			
				
	
			
			
			
						parent
						
							2b8921bf67
						
					
				
				
					commit
					42c2c9fb2d
				
			@@ -203,6 +203,7 @@ run_test("hotspots", (override) => {
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
run_test("invites_changed", (override) => {
 | 
			
		||||
    $.create("#admin-invites-list", {children: ["stub"]});
 | 
			
		||||
    const event = event_fixtures.invites_changed;
 | 
			
		||||
    const stub = make_stub();
 | 
			
		||||
    override(settings_invites, "set_up", stub.f);
 | 
			
		||||
 
 | 
			
		||||
@@ -301,6 +301,7 @@ run_test("format_drafts", (override) => {
 | 
			
		||||
    override(drafts, "open_overlay", noop);
 | 
			
		||||
    drafts.set_initial_element = noop;
 | 
			
		||||
 | 
			
		||||
    $.create("#drafts_table .draft-row", {children: []});
 | 
			
		||||
    drafts.launch();
 | 
			
		||||
    timerender.render_now = stub_render_now;
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ set_global("popovers", {
 | 
			
		||||
 | 
			
		||||
rows.is_draft_row = () => false;
 | 
			
		||||
 | 
			
		||||
run_test("pan_and_zoom", () => {
 | 
			
		||||
run_test("pan_and_zoom", (override) => {
 | 
			
		||||
    $.clear_all_elements();
 | 
			
		||||
 | 
			
		||||
    const img = $.create("img-stub");
 | 
			
		||||
@@ -33,7 +33,12 @@ run_test("pan_and_zoom", () => {
 | 
			
		||||
 | 
			
		||||
    img.set_parent(link);
 | 
			
		||||
    link.closest = () => msg;
 | 
			
		||||
    msg.attr("zid", "1234");
 | 
			
		||||
 | 
			
		||||
    override(rows, "id", (row) => {
 | 
			
		||||
        assert.equal(row, msg);
 | 
			
		||||
        return 1234;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    img.attr("src", "example");
 | 
			
		||||
 | 
			
		||||
    let fetched_zid;
 | 
			
		||||
@@ -51,7 +56,7 @@ run_test("pan_and_zoom", () => {
 | 
			
		||||
    assert.equal(fetched_zid, 1234);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
run_test("youtube", () => {
 | 
			
		||||
run_test("youtube", (override) => {
 | 
			
		||||
    $.clear_all_elements();
 | 
			
		||||
 | 
			
		||||
    const href = "https://youtube.com/some-random-clip";
 | 
			
		||||
@@ -59,7 +64,10 @@ run_test("youtube", () => {
 | 
			
		||||
    const link = $.create("link-stub");
 | 
			
		||||
    const msg = $.create("msg-stub");
 | 
			
		||||
 | 
			
		||||
    msg.attr("zid", "4321");
 | 
			
		||||
    override(rows, "id", (row) => {
 | 
			
		||||
        assert.equal(row, msg);
 | 
			
		||||
        return 4321;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    $(img).attr("src", href);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -127,14 +127,14 @@ set_global("current_msg_list", {
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
run_test("open_reactions_popover", () => {
 | 
			
		||||
    $(".selected-row").set_find_results(".actions_hover", $(".target-action"));
 | 
			
		||||
    $(".selected-row").set_find_results(".reaction_button", $(".target-reaction"));
 | 
			
		||||
    $(".selected-row").set_find_results(".actions_hover", ["action-stub"]);
 | 
			
		||||
    $(".selected-row").set_find_results(".reaction_button", ["reaction-stub"]);
 | 
			
		||||
 | 
			
		||||
    let called = false;
 | 
			
		||||
    emoji_picker.toggle_emoji_popover = function (target, id) {
 | 
			
		||||
        called = true;
 | 
			
		||||
        assert.equal(id, 42);
 | 
			
		||||
        assert.equal(target, $(".target-reaction")[0]);
 | 
			
		||||
        assert.equal(target, "action-stub");
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    assert(reactions.open_reactions_popover());
 | 
			
		||||
@@ -148,7 +148,7 @@ run_test("open_reactions_popover", () => {
 | 
			
		||||
    emoji_picker.toggle_emoji_popover = function (target, id) {
 | 
			
		||||
        called = true;
 | 
			
		||||
        assert.equal(id, 42);
 | 
			
		||||
        assert.equal(target, $(".target-action")[0]);
 | 
			
		||||
        assert.equal(target, "reaction-stub");
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    assert(reactions.open_reactions_popover());
 | 
			
		||||
 
 | 
			
		||||
@@ -84,6 +84,8 @@ run_test("initialize", () => {
 | 
			
		||||
    const search_button = $(".search_button");
 | 
			
		||||
    const searchbox = $("#searchbox");
 | 
			
		||||
 | 
			
		||||
    search_query_box[0] = "stub";
 | 
			
		||||
 | 
			
		||||
    search_pill.get_search_string_for_current_filter = function () {
 | 
			
		||||
        return "is:starred";
 | 
			
		||||
    };
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,8 @@ function test_populate(opts) {
 | 
			
		||||
    table.set_find_results("tr.profile-field-row", rows);
 | 
			
		||||
    table.set_find_results("tr.profile-field-form", form);
 | 
			
		||||
 | 
			
		||||
    table[0] = "stub";
 | 
			
		||||
 | 
			
		||||
    let num_appends = 0;
 | 
			
		||||
    table.append = () => {
 | 
			
		||||
        num_appends += 1;
 | 
			
		||||
 
 | 
			
		||||
@@ -187,5 +187,7 @@ run_test("initialize_everything", () => {
 | 
			
		||||
    compose.compute_show_video_chat_button = () => {};
 | 
			
		||||
    $("#below-compose-content .video_link").toggle = () => {};
 | 
			
		||||
 | 
			
		||||
    $("<audio>")[0] = "stub";
 | 
			
		||||
 | 
			
		||||
    ui_init.initialize_everything();
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -413,18 +413,20 @@ function make_new_elem(selector, opts) {
 | 
			
		||||
                f.call(child);
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
        self[Symbol.iterator] = function* () {
 | 
			
		||||
            for (const child of opts.children) {
 | 
			
		||||
                yield child;
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
        self.length = opts.children.length;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (selector[0] === "<") {
 | 
			
		||||
        self.html(selector);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    self[0] = "you-must-set-the-child-yourself";
 | 
			
		||||
 | 
			
		||||
    self.selector = selector;
 | 
			
		||||
 | 
			
		||||
    self.length = 1;
 | 
			
		||||
 | 
			
		||||
    return self;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user