UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

100 lines (99 loc) 3.38 kB
/** * DevExtreme (esm/__internal/core/utils/scroll.test.js) * Version: 24.2.7 * Build date: Mon Apr 28 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import { beforeEach, describe, expect, it, jest } from "@jest/globals"; import { getMemoizeScrollTo } from "./scroll"; describe("Scroll memoize scrollTo", (() => { let scrollableMock = { scrollTo: jest.fn() }; beforeEach((() => { scrollableMock = { scrollTo: jest.fn() } })); it("should call origin scrollTo first time", (() => { const scrollParams = { top: 10 }; const cachedScrollTo = getMemoizeScrollTo((() => scrollableMock)); cachedScrollTo(scrollParams); expect(scrollableMock.scrollTo).toHaveBeenCalledWith(scrollParams) })); it("should call origin scrollTo with scrollable context", (() => { let done = () => {}; const donePromise = new Promise((resolve => { done = resolve })); scrollableMock.scrollTo = jest.fn().mockImplementation((function() { expect(this).toEqual(scrollableMock); done() })); const cachedScrollTo = getMemoizeScrollTo((() => scrollableMock)); cachedScrollTo({ top: 10 }); return donePromise })); it("should call origin scrollTo if params changed", (() => { const scrollParams = [{ top: 10 }, { top: 10, left: 10 }]; const cachedScrollTo = getMemoizeScrollTo((() => scrollableMock)); cachedScrollTo(scrollParams[0]); cachedScrollTo(scrollParams[1]); expect(scrollableMock.scrollTo).toBeCalledTimes(2); expect(scrollableMock.scrollTo).toHaveBeenCalledWith(scrollParams[1]) })); it("shouldn't call origin scrollTo if params wasn't change", (() => { const scrollParams = [{ left: 10 }, { left: 10 }]; const cachedScrollTo = getMemoizeScrollTo((() => scrollableMock)); cachedScrollTo(scrollParams[0]); cachedScrollTo(scrollParams[1]); expect(scrollableMock.scrollTo).toBeCalledTimes(1) })); it("shouldn't call origin scrollTo if the integer part of params wasn't change", (() => { const scrollParams = [{ left: 10.2 }, { left: 10.3 }, { left: 10.4 }]; const cachedScrollTo = getMemoizeScrollTo((() => scrollableMock)); cachedScrollTo(scrollParams[0]); cachedScrollTo(scrollParams[1]); cachedScrollTo(scrollParams[2]); expect(scrollableMock.scrollTo).toBeCalledTimes(1) })); it("should call origin scroll to if params wasn't change and force flag is true", (() => { const scrollParams = { left: 10 }; const cachedScrollTo = getMemoizeScrollTo((() => scrollableMock)); cachedScrollTo(scrollParams, true); cachedScrollTo(scrollParams, true); cachedScrollTo(scrollParams, true); expect(scrollableMock.scrollTo).toBeCalledTimes(3) })) }));