UNPKG

playable

Version:

Video player based on HTML5Video

95 lines 4.3 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 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