playable
Version:
Video player based on HTML5Video
135 lines • 6.08 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 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