mirror of
https://github.com/webslides/WebSlides.git
synced 2025-08-17 10:30:51 +02:00
New test: Zoom
This commit is contained in:
66
test/utils/zoom.test.js
Normal file
66
test/utils/zoom.test.js
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
import Zoom from '../../src/js/plugins/zoom';
|
||||||
|
import DOM from '../../src/js/utils/dom';
|
||||||
|
|
||||||
|
jest.useFakeTimers();
|
||||||
|
|
||||||
|
// Copy of DOM.fireEvent, but using keydown
|
||||||
|
const simulateKeyEvent = (el, code) => {
|
||||||
|
const evt = new KeyboardEvent("keydown", {
|
||||||
|
bubbles: true,
|
||||||
|
cancelableCode: true,
|
||||||
|
which: code,
|
||||||
|
shiftKey: true});
|
||||||
|
el.dispatchEvent(evt);
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
const slides = '12345'.replace(/(\d)/g, '<div id="section-$1" class="slide"><div>Slide $1</div></div>');
|
||||||
|
document.body.innerHTML = `<div id="webslides">${slides}</div>`;
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Zoom utility', () => {
|
||||||
|
|
||||||
|
const ws = document.getElementById('webslides');
|
||||||
|
const slides = ws.querySelectorAll('.slide');
|
||||||
|
const goto = jest.fn();
|
||||||
|
const enable = jest.fn();
|
||||||
|
const disable = jest.fn();
|
||||||
|
|
||||||
|
const webslides = {
|
||||||
|
el: ws,
|
||||||
|
slides: [],
|
||||||
|
goToSlide: goto,
|
||||||
|
enable: enable,
|
||||||
|
disable: disable
|
||||||
|
};
|
||||||
|
slides.forEach( slide => webslides.slides.push({el: slide}));
|
||||||
|
|
||||||
|
const zoom = new Zoom(webslides);
|
||||||
|
|
||||||
|
const zws = document.querySelector('#webslides-zoomed');
|
||||||
|
const zoomSlides = zws.querySelectorAll('.slide');
|
||||||
|
|
||||||
|
expect(zws).not.toBe(null);
|
||||||
|
expect(zws.style.display).toBe('none');
|
||||||
|
expect(slides.length).toBe(zoomSlides.length);
|
||||||
|
expect(zws.childNodes[0].className).toBe('wrap');
|
||||||
|
expect(zws.childNodes[0].childNodes[0].className).toBe('grid');
|
||||||
|
|
||||||
|
simulateKeyEvent(document.body, 109);
|
||||||
|
expect(zws.style.display).toBe('');
|
||||||
|
|
||||||
|
// Wait until next execution
|
||||||
|
jest.runTimersToTime(401);
|
||||||
|
expect(disable.mock.calls.length).toBe(1);
|
||||||
|
expect(enable.mock.calls.length).toBe(0);
|
||||||
|
expect(goto.mock.calls.length).toBe(0);
|
||||||
|
|
||||||
|
DOM.fireEvent(zws.querySelector('.zoom-layer'), 'click');
|
||||||
|
|
||||||
|
// Wait until next execution
|
||||||
|
jest.runTimersToTime(401);
|
||||||
|
expect(disable.mock.calls.length).toBe(1);
|
||||||
|
expect(enable.mock.calls.length).toBe(1);
|
||||||
|
expect(goto.mock.calls.length).toBe(1);
|
||||||
|
|
||||||
|
});
|
Reference in New Issue
Block a user