From fb6fdb1d57ebcd98596d81e6a8bd846ef23509b5 Mon Sep 17 00:00:00 2001 From: displaynone Date: Fri, 5 May 2017 23:47:07 +0200 Subject: [PATCH] New test: Keyboard --- test/utils/keyboard.test.js | 62 +++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 test/utils/keyboard.test.js diff --git a/test/utils/keyboard.test.js b/test/utils/keyboard.test.js new file mode 100644 index 0000000..8843e6b --- /dev/null +++ b/test/utils/keyboard.test.js @@ -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 = `

Text

`; +}); + +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); +});