zrequire('rows');
zrequire('lightbox');

set_global('message_store', {});
set_global('Image', class Image {});
set_global('overlays', {
    close_overlay: () => {},
    close_active: () => {},
    open_overlay: () => {},
});
set_global('popovers', {
    hide_all: () => {},
});

rows.is_draft_row = () => false;

set_global('$', global.make_zjquery());

run_test('pan_and_zoom', () => {
    $.clear_all_elements();

    const img = $.create('img-stub');
    const link = $.create('link-stub');
    const msg = $.create('msg-stub');

    $(img).closest = () => [];

    img.set_parent(link);
    link.closest = () => msg;
    msg.attr("zid", "1234");
    img.attr("src", "example");

    let fetched_zid;

    message_store.get = (zid) => {
        fetched_zid = zid;
        return 'message-stub';
    };

    // Used by render_lightbox_list_images
    $.stub_selector('.focused_table .message_inline_image img', []);

    lightbox.open(img);

    assert.equal(fetched_zid, 1234);
});

run_test('youtube', () => {
    $.clear_all_elements();

    const href = 'https://youtube.com/some-random-clip';
    const img = $.create('img-stub');
    const link = $.create('link-stub');
    const msg = $.create('msg-stub');

    msg.attr("zid", "4321");

    $(img).attr('src', href);

    $(img).closest = (sel) => {
        if (sel === '.youtube-video') {
            // We just need a nonempty array to
            // set is_youtube_video to true.
            return ['whatever'];
        }
        return [];
    };

    img.set_parent(link);
    link.closest = () => msg;
    link.attr('href', href);

    // Used by render_lightbox_list_images
    $.stub_selector('.focused_table .message_inline_image img', []);

    lightbox.open(img);
    assert.equal($('.image-actions .open').attr('href'), href);
});
