const FetchStatus = zrequire('fetch_status'); set_global('message_scroll', { hide_loading_older: () => {}, show_loading_older: () => {}, hide_loading_newer: () => {}, show_loading_newer: () => {}, }); let fetch_status = FetchStatus(); function reset() { fetch_status = FetchStatus(); } function can_load_newer() { assert.equal(fetch_status.can_load_newer_messages(), true); } function blocked_newer() { assert.equal(fetch_status.can_load_newer_messages(), false); } function can_load_older() { assert.equal(fetch_status.can_load_older_messages(), true); } function blocked_older() { assert.equal(fetch_status.can_load_older_messages(), false); } function has_found_oldest() { assert.equal(fetch_status.has_found_oldest(), true); } function has_not_found_oldest() { assert.equal(fetch_status.has_found_oldest(), false); } function has_found_newest() { assert.equal(fetch_status.has_found_newest(), true); } function has_not_found_newest() { assert.equal(fetch_status.has_found_newest(), false); } function can_load_history() { assert.equal(fetch_status.history_limited(), false); } function blocked_history() { assert.equal(fetch_status.history_limited(), true); } run_test('basics', () => { reset(); fetch_status.start_newer_batch({ update_loading_indicator: false }); fetch_status.start_older_batch({ update_loading_indicator: false }); blocked_newer(); blocked_older(); can_load_history(); has_not_found_oldest(); has_not_found_newest(); let data = { update_loading_indicator: false, found_oldest: true, found_newest: true, history_limited: true, }; fetch_status.finish_newer_batch([], data); fetch_status.finish_older_batch(data); has_found_oldest(); has_found_newest(); blocked_newer(); blocked_older(); blocked_history(); reset(); fetch_status.start_newer_batch({ update_loading_indicator: true }); fetch_status.start_older_batch({ update_loading_indicator: true }); blocked_newer(); blocked_older(); can_load_history(); data = { update_loading_indicator: false, found_oldest: false, found_newest: false, history_limited: false, }; fetch_status.finish_newer_batch([], data); fetch_status.finish_older_batch(data); can_load_older(); can_load_newer(); can_load_history(); reset(); can_load_older(); fetch_status.start_older_batch({ update_loading_indicator: false }); blocked_older(); can_load_newer(); can_load_history(); fetch_status.finish_older_batch({ update_loading_indicator: true, found_oldest: false, history_limited: false, }); can_load_older(); can_load_newer(); can_load_history(); fetch_status.start_older_batch({ update_loading_indicator: true }); blocked_older(); can_load_newer(); can_load_history(); fetch_status.finish_older_batch({ update_loading_indicator: true, found_oldest: true, history_limited: true, }); blocked_older(); can_load_newer(); blocked_history(); reset(); can_load_older(); can_load_newer(); fetch_status.start_newer_batch({ update_loading_indicator: false }); can_load_older(); blocked_newer(); fetch_status.finish_newer_batch([], { update_loading_indicator: true, found_newest: false, }); can_load_older(); can_load_newer(); fetch_status.start_newer_batch({ update_loading_indicator: true }); can_load_older(); blocked_newer(); fetch_status.finish_newer_batch([], { update_loading_indicator: true, found_newest: true, }); can_load_older(); blocked_newer(); });