@netdata/charts
Version:
Netdata frontend SDK and chart utilities
64 lines (63 loc) • 2.12 kB
JavaScript
;
var _ = _interopRequireDefault(require("."));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
describe("makeExecuteLatest", function () {
var executeLatest;
beforeEach(function () {
executeLatest = (0, _["default"])();
jest.useFakeTimers();
});
afterEach(function () {
jest.useRealTimers();
});
it("executes callback after timeout", function () {
var callback = jest.fn();
var execute = executeLatest.add(callback);
execute("arg1", "arg2");
expect(callback).not.toBeCalled();
jest.runAllTimers();
expect(callback).toBeCalledWith("arg1", "arg2");
});
it("cancels previous timeout when called again", function () {
var callback = jest.fn();
var execute = executeLatest.add(callback);
execute("first");
execute("second");
jest.runAllTimers();
expect(callback).toBeCalledTimes(1);
expect(callback).toBeCalledWith("second");
});
it("handles multiple execute functions", function () {
var callback1 = jest.fn();
var callback2 = jest.fn();
var execute1 = executeLatest.add(callback1);
var execute2 = executeLatest.add(callback2);
execute1("first");
execute2("second");
jest.runAllTimers();
expect(callback1).toBeCalledWith("first");
expect(callback2).toBeCalledWith("second");
});
it("clears all pending timeouts", function () {
var callback1 = jest.fn();
var callback2 = jest.fn();
var execute1 = executeLatest.add(callback1);
var execute2 = executeLatest.add(callback2);
execute1("first");
execute2("second");
executeLatest.clear();
jest.runAllTimers();
expect(callback1).not.toBeCalled();
expect(callback2).not.toBeCalled();
});
it("clears previous timeout before setting new one", function () {
var callback = jest.fn();
var execute = executeLatest.add(callback);
execute("first");
var firstTimeoutId = setTimeout(function () {}, 0);
execute("second");
jest.runAllTimers();
expect(callback).toBeCalledTimes(1);
expect(callback).toBeCalledWith("second");
});
});