playable
Version:
Video player based on HTML5Video
95 lines • 4.3 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 constants_1 = require("../../../constants");
var testkit_1 = (0, tslib_1.__importDefault)(require("../../../testkit"));
var screen_1 = (0, tslib_1.__importDefault)(require("./screen"));
var FullScreenManagerMock = /** @class */ (function () {
function FullScreenManagerMock() {
this.enterFullScreen = function (_) { return _; };
this.exitFullScreen = function (_) { return _; };
this.isInFullScreen = false;
this.isEnabled = true;
this._config = {};
}
return FullScreenManagerMock;
}());
describe('Loader', function () {
var testkit;
var screen;
var engine;
var fullScreenManager;
beforeEach(function () {
testkit = (0, testkit_1.default)();
testkit.registerModuleAsSingleton('fullScreenManager', FullScreenManagerMock);
testkit.registerModule('screen', screen_1.default);
engine = testkit.getModule('engine');
fullScreenManager = testkit.getModule('fullScreenManager');
screen = testkit.getModule('screen');
});
describe('constructor', function () {
it('should create instance ', function () {
(0, chai_1.expect)(screen).to.exist;
(0, chai_1.expect)(screen.view).to.exist;
});
});
describe('instance callbacks', function () {
it('should trigger _toggleVideoPlayback on node click', function () {
var processClickSpy = sinon.spy(screen, '_processClick');
screen._bindCallbacks();
screen._initUI();
screen.view.getElement().dispatchEvent(new Event('click'));
(0, chai_1.expect)(processClickSpy.called).to.be.true;
});
it('should remove timeout of delayed playback change on _processClick and call _toggleFullScreen on _processDblClick', function () {
var timeoutClearSpy = sinon.spy(window, 'clearTimeout');
var toggleFullScreenSpy = sinon.spy(screen, '_toggleFullScreen');
var id = window.setTimeout(function () { }, 0);
screen._delayedToggleVideoPlaybackTimeout = id;
screen._processClick();
(0, chai_1.expect)(timeoutClearSpy.calledWith(id)).to.be.true;
screen._processDblClick();
(0, chai_1.expect)(toggleFullScreenSpy.called).to.be.true;
timeoutClearSpy.restore();
});
it('should add native controls if config passed', function () {
testkit.setConfig({
nativeBrowserControls: true,
});
var video = document.createElement('video');
video.setAttribute = sinon.spy();
engine.getElement = function () { return video; };
screen = testkit.getModule('screen');
(0, chai_1.expect)(video.setAttribute.calledWith('controls', 'true')).to.be.true;
});
it('should emit ui event on enter full screen', function () {
var spy = sinon.spy(fullScreenManager, 'enterFullScreen');
fullScreenManager.isInFullScreen = false;
screen._toggleFullScreen();
(0, chai_1.expect)(spy.called).to.be.true;
fullScreenManager.enterFullScreen.restore();
});
it('should emit ui event on exit full screen', function () {
var spy = sinon.spy(fullScreenManager, 'exitFullScreen');
fullScreenManager.isInFullScreen = true;
screen._toggleFullScreen();
(0, chai_1.expect)(spy.called).to.be.true;
fullScreenManager.exitFullScreen.restore();
});
it('should have method for toggling playback', function () {
var playSpy = sinon.spy();
var pauseSpy = sinon.spy();
screen._engine = {
getCurrentState: function () { return constants_1.EngineState.PLAYING; },
play: playSpy,
pause: pauseSpy,
};
screen._toggleVideoPlayback();
(0, chai_1.expect)(pauseSpy.called).to.be.true;
});
});
});
//# sourceMappingURL=screen.spec.js.map