UNPKG

playable

Version:

Video player based on HTML5Video

117 lines 6.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); require("jsdom-global/register"); var chai_1 = require("chai"); var sinon = (0, tslib_1.__importStar)(require("sinon")); var keyboard_interceptor_1 = require("../../utils/keyboard-interceptor"); var constants_1 = require("../../constants"); var testkit_1 = (0, tslib_1.__importDefault)(require("../../testkit")); var keyboard_control_1 = require("./keyboard-control"); describe('KeyboardControl', function () { var keyDownEvent = new Event('keydown'); keyDownEvent.preventDefault = sinon.spy(); var testkit; var engine; var eventEmitter; var rootContainer; var keyboardControl; beforeEach(function () { testkit = (0, testkit_1.default)(); eventEmitter = testkit.getModule('eventEmitter'); engine = testkit.getModule('engine'); engine._output._adapterStrategy._attachedAdapter = { isSeekAvailable: true, attach: function () { }, detach: function () { }, }; rootContainer = testkit.getModule('rootContainer'); keyboardControl = testkit.getModule('keyboardControl'); }); afterEach(function () { keyDownEvent.preventDefault.resetHistory(); }); describe('as a reaction on press of key', function () { beforeEach(function () { sinon.spy(eventEmitter, 'emitAsync'); delete keyDownEvent.keyCode; }); afterEach(function () { eventEmitter.emitAsync.restore(); keyboardControl.destroy(); }); it('should do stuff if key was TAB', function () { keyDownEvent.keyCode = keyboard_interceptor_1.KEYCODES.TAB; rootContainer.getElement().dispatchEvent(keyDownEvent); (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.KEYBOARD_KEYDOWN_INTERCEPTED)).to.be.true; }); it('should do stuff if key was TAB', function () { keyDownEvent.keyCode = keyboard_interceptor_1.KEYCODES.TAB; rootContainer.getElement().dispatchEvent(keyDownEvent); (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.KEYBOARD_KEYDOWN_INTERCEPTED)).to.be.true; }); it('should do stuff if key was SPACE_BAR', function () { sinon.stub(engine, 'togglePlayback'); keyDownEvent.keyCode = keyboard_interceptor_1.KEYCODES.SPACE_BAR; rootContainer.getElement().dispatchEvent(keyDownEvent); (0, chai_1.expect)(keyDownEvent.preventDefault.called).to.be.true; (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.KEYBOARD_KEYDOWN_INTERCEPTED)).to.be.true; (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.TOGGLE_PLAYBACK_WITH_KEYBOARD)).to.be.true; (0, chai_1.expect)(engine.togglePlayback.called).to.be.true; engine.togglePlayback.restore(); }); it('should do stuff if key was LEFT_ARROW', function () { sinon.stub(engine, 'seekBackward'); keyDownEvent.keyCode = keyboard_interceptor_1.KEYCODES.LEFT_ARROW; rootContainer.getElement().dispatchEvent(keyDownEvent); (0, chai_1.expect)(keyDownEvent.preventDefault.called).to.be.true; (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.KEYBOARD_KEYDOWN_INTERCEPTED)).to.be.true; (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.GO_BACKWARD_WITH_KEYBOARD)).to.be.true; (0, chai_1.expect)(engine.seekBackward.calledWith(keyboard_control_1.AMOUNT_TO_SKIP_SECONDS)).to.be.true; engine.seekBackward.restore(); }); it('should do stuff if key was RIGHT_ARROW', function () { sinon.stub(engine, 'seekForward'); keyDownEvent.keyCode = keyboard_interceptor_1.KEYCODES.RIGHT_ARROW; rootContainer.getElement().dispatchEvent(keyDownEvent); (0, chai_1.expect)(keyDownEvent.preventDefault.called).to.be.true; (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.KEYBOARD_KEYDOWN_INTERCEPTED)).to.be.true; (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.GO_FORWARD_WITH_KEYBOARD)).to.be.true; (0, chai_1.expect)(engine.seekForward.calledWith(keyboard_control_1.AMOUNT_TO_SKIP_SECONDS)).to.be.true; engine.seekForward.restore(); }); it('should do stuff if key was UP_ARROW', function () { sinon.stub(engine, 'increaseVolume'); keyDownEvent.keyCode = keyboard_interceptor_1.KEYCODES.UP_ARROW; rootContainer.getElement().dispatchEvent(keyDownEvent); (0, chai_1.expect)(keyDownEvent.preventDefault.called).to.be.true; (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.KEYBOARD_KEYDOWN_INTERCEPTED)).to.be.true; (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.INCREASE_VOLUME_WITH_KEYBOARD)).to.be.true; (0, chai_1.expect)(engine.increaseVolume.calledWith(keyboard_control_1.AMOUNT_TO_CHANGE_VOLUME)).to.be .true; engine.increaseVolume.restore(); }); it('should do stuff if key was DOWN_ARROW', function () { sinon.stub(engine, 'decreaseVolume'); keyDownEvent.keyCode = keyboard_interceptor_1.KEYCODES.DOWN_ARROW; rootContainer.getElement().dispatchEvent(keyDownEvent); (0, chai_1.expect)(keyDownEvent.preventDefault.called).to.be.true; (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.KEYBOARD_KEYDOWN_INTERCEPTED)).to.be.true; (0, chai_1.expect)(eventEmitter.emitAsync.calledWith(constants_1.UIEvent.DECREASE_VOLUME_WITH_KEYBOARD)).to.be.true; (0, chai_1.expect)(engine.decreaseVolume.calledWith(keyboard_control_1.AMOUNT_TO_CHANGE_VOLUME)).to.be .true; engine.decreaseVolume.restore(); }); }); describe('after destroy', function () { it('should not react on key down', function () { sinon.spy(eventEmitter, 'emitAsync'); keyboardControl.destroy(); keyDownEvent.keyCode = keyboard_interceptor_1.KEYCODES.TAB; rootContainer.getElement().dispatchEvent(keyDownEvent); (0, chai_1.expect)(eventEmitter.emitAsync.called).to.be.false; eventEmitter.emitAsync.restore(); }); }); }); //# sourceMappingURL=keyboard-control.spec.js.map