UNPKG

@netdata/charts

Version:

Netdata frontend SDK and chart utilities

88 lines (87 loc) 2.95 kB
"use strict"; var _ = _interopRequireDefault(require(".")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } describe("makeResizeObserver", function () { var mockElement; var mockObserver; var observeCallback; beforeEach(function () { jest.useFakeTimers(); mockElement = {}; mockObserver = { observe: jest.fn(), disconnect: jest.fn() }; global.ResizeObserver = jest.fn(function (callback) { observeCallback = callback; return mockObserver; }); }); afterEach(function () { jest.useRealTimers(); jest.restoreAllMocks(); }); it("creates and observes element", function () { var action = jest.fn(); var initialAction = jest.fn(); (0, _["default"])(mockElement, action, initialAction); expect(global.ResizeObserver).toHaveBeenCalledWith(expect.any(Function)); expect(mockObserver.observe).toHaveBeenCalledWith(mockElement); }); it("calls initialAction on first resize after delay", function () { var action = jest.fn(); var initialAction = jest.fn(); (0, _["default"])(mockElement, action, initialAction); observeCallback(); expect(initialAction).not.toHaveBeenCalled(); jest.advanceTimersByTime(200); expect(initialAction).toHaveBeenCalled(); expect(action).not.toHaveBeenCalled(); }); it("calls action on subsequent resizes after delay", function () { var action = jest.fn(); var initialAction = jest.fn(); (0, _["default"])(mockElement, action, initialAction); observeCallback(); jest.advanceTimersByTime(200); observeCallback(); expect(action).not.toHaveBeenCalled(); jest.advanceTimersByTime(200); expect(action).toHaveBeenCalled(); expect(initialAction).toHaveBeenCalledTimes(1); }); it("debounces rapid resize events", function () { var action = jest.fn(); (0, _["default"])(mockElement, action); observeCallback(); jest.advanceTimersByTime(200); observeCallback(); observeCallback(); observeCallback(); jest.advanceTimersByTime(100); expect(action).not.toHaveBeenCalled(); jest.advanceTimersByTime(200); expect(action).toHaveBeenCalledTimes(1); }); it("handles missing initialAction", function () { var action = jest.fn(); (0, _["default"])(mockElement, action); observeCallback(); jest.advanceTimersByTime(200); expect(action).not.toHaveBeenCalled(); }); it("returns cleanup function that disconnects observer", function () { var action = jest.fn(); var cleanup = (0, _["default"])(mockElement, action); cleanup(); expect(mockObserver.disconnect).toHaveBeenCalled(); }); it("clears pending timeouts on cleanup", function () { var action = jest.fn(); var cleanup = (0, _["default"])(mockElement, action); observeCallback(); cleanup(); jest.advanceTimersByTime(300); expect(action).not.toHaveBeenCalled(); }); });