diff --git a/frontend_tests/node_tests/channel.js b/frontend_tests/node_tests/channel.js index 6b9888f0fe..b60750e7fc 100644 --- a/frontend_tests/node_tests/channel.js +++ b/frontend_tests/node_tests/channel.js @@ -46,7 +46,14 @@ function test_with_mock_ajax(test_params) { check_ajax_options(ajax_options); } -run_test("post", () => { +function test(label, f) { + run_test(label, (override) => { + reload_state.clear_for_testing(); + f(override); + }); +} + +test("post", () => { test_with_mock_ajax({ run_code() { channel.post({}); @@ -63,7 +70,7 @@ run_test("post", () => { }); }); -run_test("patch", () => { +test("patch", () => { test_with_mock_ajax({ run_code() { channel.patch({}); @@ -81,7 +88,7 @@ run_test("patch", () => { }); }); -run_test("put", () => { +test("put", () => { test_with_mock_ajax({ run_code() { channel.put({}); @@ -98,7 +105,7 @@ run_test("put", () => { }); }); -run_test("delete", () => { +test("delete", () => { test_with_mock_ajax({ run_code() { channel.del({}); @@ -115,7 +122,7 @@ run_test("delete", () => { }); }); -run_test("get", () => { +test("get", () => { test_with_mock_ajax({ run_code() { channel.get({}); @@ -132,7 +139,7 @@ run_test("get", () => { }); }); -run_test("normal_post", () => { +test("normal_post", () => { const data = { s: "some_string", num: 7, @@ -177,7 +184,7 @@ run_test("normal_post", () => { }); }); -run_test("patch_with_form_data", () => { +test("patch_with_form_data", () => { let appended; const data = { @@ -208,7 +215,7 @@ run_test("patch_with_form_data", () => { }); }); -run_test("reload_on_403_error", () => { +test("reload_on_403_error", () => { test_with_mock_ajax({ xhr: { status: 403, @@ -231,7 +238,7 @@ run_test("reload_on_403_error", () => { }); }); -run_test("unexpected_403_response", () => { +test("unexpected_403_response", () => { test_with_mock_ajax({ xhr: { status: 403, @@ -249,7 +256,7 @@ run_test("unexpected_403_response", () => { }); }); -run_test("retry", () => { +test("retry", () => { test_with_mock_ajax({ run_code() { channel.post({ @@ -273,7 +280,7 @@ run_test("retry", () => { }); }); -run_test("too_many_pending", () => { +test("too_many_pending", () => { channel.clear_for_tests(); $.ajax = () => { const xhr = "stub"; @@ -291,7 +298,7 @@ run_test("too_many_pending", () => { channel.clear_for_tests(); }); -run_test("xhr_error_message", () => { +test("xhr_error_message", () => { let xhr = { status: "200", responseText: "does not matter", @@ -307,7 +314,7 @@ run_test("xhr_error_message", () => { assert.equal(channel.xhr_error_message(msg, xhr), "some message: file not found"); }); -run_test("while_reloading", () => { +test("while_reloading", () => { reload_state.set_state_to_in_progress(); assert.equal(channel.get({ignore_reload: false}), undefined); diff --git a/static/js/reload_state.js b/static/js/reload_state.js index 6084fdac5c..b16d0fa6de 100644 --- a/static/js/reload_state.js +++ b/static/js/reload_state.js @@ -11,6 +11,12 @@ let reload_in_progress = false; let reload_pending = false; export let csrf_failed_handler; +export function clear_for_testing() { + reload_in_progress = false; + reload_pending = false; + csrf_failed_handler = undefined; +} + export function is_pending() { return reload_pending; }