"use strict"; const {strict: assert} = require("assert"); const {mock_esm, zrequire} = require("../zjsunit/namespace"); const {run_test} = require("../zjsunit/test"); mock_esm("../../static/js/message_scroll", { hide_loading_older: () => {}, show_loading_older: () => {}, hide_loading_newer: () => {}, show_loading_newer: () => {}, }); const {FetchStatus} = zrequire("fetch_status"); let fetch_status = new FetchStatus(); function reset() { fetch_status = new 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(); });