UNPKG

playable

Version:

Video player based on HTML5Video

135 lines 6.08 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 ios_1 = (0, tslib_1.__importDefault)(require("./ios")); describe('IOSFullScreen', function () { var callback = sinon.spy(); var element; var fullScreen; beforeEach(function () { element = document.createDocumentFragment(); fullScreen = new ios_1.default(element, callback); }); afterEach(function () { callback.resetHistory(); }); describe('enable state', function () { it('should return true in native state is true', function () { element.webkitSupportsFullscreen = true; (0, chai_1.expect)(fullScreen.isEnabled).to.be.true; }); it('should return false in native state is false', function () { element.webkitSupportsFullscreen = false; (0, chai_1.expect)(fullScreen.isEnabled).to.be.false; }); }); describe('full screen state', function () { it('should return true in native state is true', function () { element.webkitDisplayingFullscreen = true; (0, chai_1.expect)(fullScreen.isInFullScreen).to.be.true; }); it('should return false in native state is false', function () { element.webkitDisplayingFullscreen = false; (0, chai_1.expect)(fullScreen.isInFullScreen).to.be.false; }); }); describe('method for entering full screen', function () { it('should use native method', function () { element.webkitSupportsFullscreen = true; element.webkitEnterFullscreen = sinon.spy(); fullScreen.request(); (0, chai_1.expect)(element.webkitEnterFullscreen.called).to.be.true; }); it('should make postpone enter if do not have metadata', function () { element.webkitSupportsFullscreen = true; element.readyState = 0; var metadataEvent = new Event('loadedmetadata'); element.webkitEnterFullscreen = function () { throw new Error('Catch'); }; fullScreen.request(); fullScreen.request(); element.webkitEnterFullscreen = sinon.spy(); element.dispatchEvent(metadataEvent); (0, chai_1.expect)(element.webkitEnterFullscreen.calledOnce).to.be.true; }); it('should do nothing if not enabled', function () { element.webkitSupportsFullscreen = false; element.webkitEnterFullscreen = sinon.spy(); fullScreen.request(); (0, chai_1.expect)(element.webkitEnterFullscreen.called).to.be.false; }); it('should do nothing if already in full screen', function () { element.webkitDisplayingFullscreen = true; element.webkitEnterFullscreen = sinon.spy(); fullScreen.request(); (0, chai_1.expect)(element.webkitEnterFullscreen.called).to.be.false; }); }); describe('method for exit full screen', function () { it('should use native method', function () { element.webkitSupportsFullscreen = true; element.webkitDisplayingFullscreen = true; element.webkitExitFullscreen = sinon.spy(); fullScreen.exit(); (0, chai_1.expect)(element.webkitExitFullscreen.called).to.be.true; }); it('should do nothing if not enabled', function () { element.webkitSupportsFullscreen = false; element.webkitExitFullscreen = sinon.spy(); fullScreen.exit(); (0, chai_1.expect)(element.webkitExitFullscreen.called).to.be.false; }); it('should do nothing if not in full screen', function () { element.webkitDisplayingFullscreen = false; element.webkitExitFullscreen = sinon.spy(); fullScreen.exit(); (0, chai_1.expect)(element.webkitExitFullscreen.called).to.be.false; }); }); describe('due to reaction on native full screen change', function () { it('should call callback if enter', function () { var enterEvent = new Event('webkitbeginfullscreen'); element.dispatchEvent(enterEvent); (0, chai_1.expect)(callback.called).to.be.true; }); it('should call callback if exit', function () { var exitEvent = new Event('webkitendfullscreen'); element.dispatchEvent(exitEvent); (0, chai_1.expect)(callback.called).to.be.true; }); }); describe('destroy method', function () { it('should clear loadedmetadata listener', function () { var metadataEvent = new Event('loadedmetadata'); element.webkitSupportsFullscreen = true; element.readyState = 0; element.webkitEnterFullscreen = function () { throw new Error('Catch'); }; fullScreen.request(); element.webkitEnterFullscreen = sinon.spy(); fullScreen.destroy(); element.dispatchEvent(metadataEvent); (0, chai_1.expect)(element.webkitEnterFullscreen.called).to.be.false; }); it('should clear webkitbeginfullscreen listener', function () { var enterEvent = new Event('webkitbeginfullscreen'); element.webkitSupportsFullscreen = true; fullScreen.destroy(); element.dispatchEvent(enterEvent); (0, chai_1.expect)(callback.called).to.be.false; }); it('should clear webkitendfullscreen listener', function () { var exitEvent = new Event('webkitendfullscreen'); element.webkitSupportsFullscreen = true; fullScreen.destroy(); element.dispatchEvent(exitEvent); (0, chai_1.expect)(callback.called).to.be.false; }); }); }); //# sourceMappingURL=ios.spec.js.map