1
0
mirror of https://github.com/webslides/WebSlides.git synced 2025-08-18 02:41:37 +02:00

New test: Keyboard

This commit is contained in:
displaynone
2017-05-05 23:47:07 +02:00
parent 218c67a435
commit fb6fdb1d57

View File

@@ -0,0 +1,62 @@
import DOM from '../../src/js/utils/dom';
import Keyboard from '../../src/js/plugins/keyboard';
import Keys from '../../src/js/utils/keys';
const simulateKeyEvent = (el, code) => {
const evt = new KeyboardEvent("keydown", {
bubbles: true,
cancelableCode: true,
which: code,
shiftKey: true});
el.dispatchEvent(evt);
};
beforeAll(() => {
document.body.innerHTML = `<div id="webslides" data-test="test"><p>Text</p></div><input id="focusable" />`;
});
test('Keyboard plugin', () => {
const goto = jest.fn();
const next = jest.fn();
const prev = jest.fn();
const ws = document.getElementById('webslides');
const focusable = document.getElementById('focusable');
let disabled = true;
const webslides = {
goToSlide: goto,
goNext: next,
goPrev: prev,
isVertical: false,
isDisabled: () => {return disabled;},
el: ws
};
const keyboard = new Keyboard(webslides);
expect(goto).not.toBeCalled();
expect(next).not.toBeCalled();
expect(prev).not.toBeCalled();
simulateKeyEvent(document, Keys.AV_PAGE);
expect(next.mock.calls.length).toBe(0);
disabled = false;
simulateKeyEvent(document, Keys.AV_PAGE);
expect(next.mock.calls.length).toBe(1);
simulateKeyEvent(document, Keys.SPACE);
expect(next.mock.calls.length).toBe(2);
simulateKeyEvent(document, Keys.RE_PAGE);
expect(prev.mock.calls.length).toBe(1);
simulateKeyEvent(document, Keys.HOME);
expect(goto.mock.calls.length).toBe(1);
simulateKeyEvent(document, Keys.DOWN);
expect(next.mock.calls.length).toBe(2);
simulateKeyEvent(document, Keys.UP);
expect(prev.mock.calls.length).toBe(1);
simulateKeyEvent(document, Keys.LEFT);
expect(prev.mock.calls.length).toBe(2);
simulateKeyEvent(document, Keys.RIGHT);
expect(next.mock.calls.length).toBe(3);
});