mirror of
https://github.com/webslides/WebSlides.git
synced 2025-08-17 18:37:00 +02:00
New test: scroll
This commit is contained in:
65
test/utils/scroll.test.js
Normal file
65
test/utils/scroll.test.js
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
import Scroll from '../../src/js/plugins/scroll';
|
||||||
|
|
||||||
|
jest.useFakeTimers();
|
||||||
|
|
||||||
|
// Copy of DOM.fireEvent, but using wheel deltas
|
||||||
|
const fireEvent = (target, eventType, deltaX, deltaY) => {
|
||||||
|
const event = new CustomEvent(eventType);
|
||||||
|
event.deltaX = deltaX;
|
||||||
|
event.deltaY = deltaY;
|
||||||
|
|
||||||
|
target.dispatchEvent(event);
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
const brs = '<br />'.repeat(20);
|
||||||
|
document.body.innerHTML = `<div id="webslides">${brs}</div>`;
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Scroll utility', () => {
|
||||||
|
// Forces mobile detection
|
||||||
|
window.navigator = {userAgent: 'Android'};
|
||||||
|
const ws = document.getElementById('webslides');
|
||||||
|
const next = jest.fn();
|
||||||
|
const prev = jest.fn();
|
||||||
|
|
||||||
|
let disabled = true;
|
||||||
|
const webslides = {
|
||||||
|
el: ws,
|
||||||
|
isDisabled: () => {return disabled;},
|
||||||
|
isMoving: false,
|
||||||
|
isVertical: false,
|
||||||
|
goNext: next,
|
||||||
|
goPrev: prev,
|
||||||
|
options: {
|
||||||
|
navigateOnScroll: true,
|
||||||
|
scrollWait: 200,
|
||||||
|
minWheelDelta: 50
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const scroll = new Scroll(webslides);
|
||||||
|
fireEvent(ws, 'wheel', 300, 200);
|
||||||
|
|
||||||
|
expect(next).not.toBeCalled();
|
||||||
|
expect(prev).not.toBeCalled();
|
||||||
|
|
||||||
|
// Wait until next execution
|
||||||
|
jest.runTimersToTime(201);
|
||||||
|
expect(next.mock.calls.length).toBe(0);
|
||||||
|
expect(prev.mock.calls.length).toBe(0);
|
||||||
|
|
||||||
|
disabled = false;
|
||||||
|
fireEvent(ws, 'wheel', 300, 200);
|
||||||
|
|
||||||
|
jest.runTimersToTime(201);
|
||||||
|
expect(next.mock.calls.length).toBe(1);
|
||||||
|
expect(prev.mock.calls.length).toBe(0);
|
||||||
|
|
||||||
|
fireEvent(ws, 'wheel', -200, -300);
|
||||||
|
|
||||||
|
jest.runTimersToTime(201);
|
||||||
|
expect(next.mock.calls.length).toBe(1);
|
||||||
|
expect(prev.mock.calls.length).toBe(1);
|
||||||
|
|
||||||
|
});
|
Reference in New Issue
Block a user