diff --git a/frontend_tests/node_tests/lightbox.js b/frontend_tests/node_tests/lightbox.js index 98ae2f2054..1a0b727483 100644 --- a/frontend_tests/node_tests/lightbox.js +++ b/frontend_tests/node_tests/lightbox.js @@ -2,10 +2,7 @@ zrequire('lightbox'); set_global('blueslip', global.make_zblueslip()); -const _message_store = new Map(); -_message_store.set(1234, { sender_full_name: "Test User" }); - -set_global('message_store', _message_store); +set_global('message_store', {}); set_global('Image', class Image {}); set_global('overlays', { close_overlay: () => {}, @@ -21,48 +18,59 @@ set_global('$', global.make_zjquery()); run_test('pan_and_zoom', () => { $.clear_all_elements(); - const img = ''; - const link = ''; + const img = $.create('img-stub'); + const link = $.create('link-stub'); + const msg = $.create('msg-stub'); - /* Due to how zquery works, we have to use a literal [zid] in the element, - since that's what the code looks for and we have to manually set the attr - that should be returned from the store. */ - const msg = $('
'); + $(img).closest = () => []; + + img.set_parent(link); + link.closest = () => msg; msg.attr("zid", "1234"); - $(img).set_parent($(link)); - $(link).set_parent(msg); + + 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(blueslip.get_test_logs('error').length, 0); - lightbox.open(''); - assert.equal(blueslip.get_test_logs('error').length, 0); + + assert.equal(fetched_zid, 1234); }); -run_test('open_url', () => { +run_test('youtube', () => { $.clear_all_elements(); - const url = 'https://youtube.com/1234'; - const img = ''; - $(img).attr('src', "https://youtube.com/image.png"); - const link = ''; - $(link).attr('href', url); - const div = '
'; - /* Due to how zquery works, we have to use a literal [zid] in the element, - since that's what the code looks for and we have to manually set the attr - that should be returned from the store. */ - const msg = $('
'); - msg.attr("zid", "1234"); - $(img).set_parent($(link)); - $(link).set_parent($(div)); - $(div).set_parent(msg); + const href = 'https://youtube.com/some-random-clip'; + const img = $.create('img-stub'); + const link = $.create('link-stub'); + const msg = $.create('msg-stub'); + + $(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'), url); + assert.equal($('.image-actions .open').attr('href'), href); assert.equal(blueslip.get_test_logs('error').length, 0); });