playable
Version:
Video player based on HTML5Video
117 lines • 6.67 kB
JavaScript
;
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