UNPKG

playable

Version:

Video player based on HTML5Video

217 lines 12.6 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 testkit_1 = (0, tslib_1.__importDefault)(require("../../../testkit")); var constants_1 = require("../../../constants"); describe('LiveIndicator', function () { var testkit; var engine; var eventEmitter; var liveIndicator; beforeEach(function () { testkit = (0, testkit_1.default)(); engine = testkit.getModule('engine'); eventEmitter = testkit.getModule('eventEmitter'); liveIndicator = testkit.getModule('liveIndicator'); }); describe('constructor', function () { it('should create instance ', function () { (0, chai_1.expect)(liveIndicator).to.exist; (0, chai_1.expect)(liveIndicator.view).to.exist; }); }); describe('instance', function () { it('should have method for showing/hiding liveIndicator', function () { var viewToggleSpy = sinon.spy(liveIndicator.view, 'toggle'); (0, chai_1.expect)(liveIndicator.isHidden, 'hidden by default').to.be.true; liveIndicator.show(); (0, chai_1.expect)(viewToggleSpy.calledWith(true)).to.be.true; (0, chai_1.expect)(liveIndicator.isHidden, 'hidden after method show called').to.be .false; liveIndicator.hide(); (0, chai_1.expect)(viewToggleSpy.lastCall.calledWith(false)).to.be.true; (0, chai_1.expect)(liveIndicator.isHidden, 'hidden after method hide called').to.be .true; viewToggleSpy.restore(); }); it('should have method for getting view node', function () { (0, chai_1.expect)(liveIndicator.getElement()).to.equal(liveIndicator.view.getElement()); }); it('should try to sync with live on click', function () { var engineSyncWithLiveSpy = sinon.stub(engine, 'syncWithLive'); var liveIndicatorViewNode = liveIndicator.view.getElement(); liveIndicatorViewNode.dispatchEvent(new Event('click')); (0, chai_1.expect)(engineSyncWithLiveSpy.called).to.be.true; engineSyncWithLiveSpy.restore(); }); }); describe('on live state change', function () { it('should reset on `LiveState.NONE`', function () { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var viewToggleSpy, viewToggleActiveSpy, viewToggleEndedSpy; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: viewToggleSpy = sinon.spy(liveIndicator.view, 'toggle'); viewToggleActiveSpy = sinon.spy(liveIndicator.view, 'toggleActive'); viewToggleEndedSpy = sinon.spy(liveIndicator.view, 'toggleEnded'); liveIndicator.show(); (0, chai_1.expect)(liveIndicator.isHidden, 'hidden before `LiveState.NONE`').to.be .false; return [4 /*yield*/, eventEmitter.emitAsync(constants_1.VideoEvent.LIVE_STATE_CHANGED, { nextState: constants_1.LiveState.NONE, })]; case 1: _a.sent(); (0, chai_1.expect)(liveIndicator.isHidden, 'isHidden').to.be.true; (0, chai_1.expect)(viewToggleSpy.calledWith(false), 'view.toggle called with `false`') .to.be.true; (0, chai_1.expect)(viewToggleActiveSpy.calledWith(false), 'view.toggleActive called with `false`').to.be.true; (0, chai_1.expect)(viewToggleEndedSpy.calledWith(false), 'view.toggleEnded called with `false`').to.be.true; viewToggleSpy.restore(); viewToggleActiveSpy.restore(); viewToggleEndedSpy.restore(); return [2 /*return*/]; } }); }); }); describe('for dynamic content', function () { beforeEach(function () { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, eventEmitter.emitAsync(constants_1.VideoEvent.LIVE_STATE_CHANGED, { nextState: constants_1.LiveState.NONE, })]; case 1: _a.sent(); return [2 /*return*/]; } }); }); }); it('should show on `LiveState.INITIAL`', function () { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var viewToggleSpy; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: viewToggleSpy = sinon.spy(liveIndicator.view, 'toggle'); (0, chai_1.expect)(liveIndicator.isHidden, 'hidden before `LiveState.INITIAL`').to .be.true; return [4 /*yield*/, eventEmitter.emitAsync(constants_1.VideoEvent.LIVE_STATE_CHANGED, { nextState: constants_1.LiveState.INITIAL, })]; case 1: _a.sent(); (0, chai_1.expect)(liveIndicator.isHidden).to.be.false; (0, chai_1.expect)(viewToggleSpy.calledWith(true)).to.be.true; viewToggleSpy.restore(); return [2 /*return*/]; } }); }); }); it('should activate on `LiveState.SYNC`', function () { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var viewToggleActiveSpy; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: viewToggleActiveSpy = sinon.spy(liveIndicator.view, 'toggleActive'); return [4 /*yield*/, eventEmitter.emitAsync(constants_1.VideoEvent.LIVE_STATE_CHANGED, { nextState: constants_1.LiveState.INITIAL, })]; case 1: _a.sent(); (0, chai_1.expect)(liveIndicator.isHidden, 'hidden before `LiveState.SYNC`').to.be .false; (0, chai_1.expect)(liveIndicator.isActive, 'active before `LiveState.SYNC`').to.be .false; return [4 /*yield*/, eventEmitter.emitAsync(constants_1.VideoEvent.LIVE_STATE_CHANGED, { nextState: constants_1.LiveState.SYNC, })]; case 2: _a.sent(); (0, chai_1.expect)(liveIndicator.isActive).to.be.true; (0, chai_1.expect)(viewToggleActiveSpy.calledWith(true)).to.be.true; viewToggleActiveSpy.restore(); return [2 /*return*/]; } }); }); }); it('should deactivate on `LiveState.NOT_SYNC`', function () { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var viewToggleActiveSpy; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: viewToggleActiveSpy = sinon.spy(liveIndicator.view, 'toggleActive'); return [4 /*yield*/, eventEmitter.emitAsync(constants_1.VideoEvent.LIVE_STATE_CHANGED, { nextState: constants_1.LiveState.INITIAL, })]; case 1: _a.sent(); return [4 /*yield*/, eventEmitter.emitAsync(constants_1.VideoEvent.LIVE_STATE_CHANGED, { nextState: constants_1.LiveState.SYNC, })]; case 2: _a.sent(); (0, chai_1.expect)(liveIndicator.isActive, 'active before out of sync').to.be.true; return [4 /*yield*/, eventEmitter.emitAsync(constants_1.VideoEvent.LIVE_STATE_CHANGED, { nextState: constants_1.LiveState.NOT_SYNC, })]; case 3: _a.sent(); (0, chai_1.expect)(liveIndicator.isActive).to.be.false; (0, chai_1.expect)(viewToggleActiveSpy.lastCall.calledWith(false)).to.be.true; viewToggleActiveSpy.restore(); return [2 /*return*/]; } }); }); }); it('should react to `LiveState.ENDED`', function () { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var viewToggleActiveSpy, viewToggleEndedSpy; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: viewToggleActiveSpy = sinon.spy(liveIndicator.view, 'toggleActive'); viewToggleEndedSpy = sinon.spy(liveIndicator.view, 'toggleEnded'); return [4 /*yield*/, eventEmitter.emitAsync(constants_1.VideoEvent.LIVE_STATE_CHANGED, { nextState: constants_1.LiveState.INITIAL, })]; case 1: _a.sent(); return [4 /*yield*/, eventEmitter.emitAsync(constants_1.VideoEvent.LIVE_STATE_CHANGED, { nextState: constants_1.LiveState.SYNC, })]; case 2: _a.sent(); (0, chai_1.expect)(liveIndicator.isActive, 'active before `LiveState.ENDED`').to.be .true; return [4 /*yield*/, eventEmitter.emitAsync(constants_1.VideoEvent.LIVE_STATE_CHANGED, { nextState: constants_1.LiveState.ENDED, })]; case 3: _a.sent(); (0, chai_1.expect)(liveIndicator.isActive, 'isActive').to.be.false; (0, chai_1.expect)(viewToggleActiveSpy.lastCall.calledWith(false), 'view.toggleActive called with `false`').to.be.true; (0, chai_1.expect)(viewToggleEndedSpy.lastCall.calledWith(true), 'view.toggleEnded called with `true`').to.be.true; viewToggleActiveSpy.restore(); viewToggleEndedSpy.restore(); return [2 /*return*/]; } }); }); }); }); }); }); //# sourceMappingURL=live-indicator.spec.js.map