summaryrefslogtreecommitdiff
path: root/javascript/videojs/test/unit/resize-manager.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'javascript/videojs/test/unit/resize-manager.test.js')
-rw-r--r--javascript/videojs/test/unit/resize-manager.test.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/javascript/videojs/test/unit/resize-manager.test.js b/javascript/videojs/test/unit/resize-manager.test.js
new file mode 100644
index 0000000..ad6f5d4
--- /dev/null
+++ b/javascript/videojs/test/unit/resize-manager.test.js
@@ -0,0 +1,99 @@
+/* eslint-env qunit */
+import ResizeManager from '../../src/js/resize-manager.js';
+import TestHelpers from './test-helpers.js';
+import sinon from 'sinon';
+
+QUnit.module('ResizeManager', {
+ beforeEach() {
+ this.clock = sinon.useFakeTimers();
+ this.player = TestHelpers.makePlayer();
+ },
+ afterEach() {
+ this.player.dispose();
+ this.clock.restore();
+ }
+});
+
+QUnit.test('ResizeManager creates an iframe if ResizeObserver is not available', function(assert) {
+ const rm = new ResizeManager(this.player, {ResizeObserver: null});
+
+ assert.equal(rm.el().tagName.toLowerCase(), 'iframe', 'we got an iframe');
+ assert.equal(rm.el().getAttribute('tabIndex'), '-1', 'TabIndex is set to -1');
+ assert.equal(rm.el().getAttribute('aria-hidden'), 'true', 'aria-hidden property is set');
+
+ rm.dispose();
+});
+
+QUnit.test('ResizeManager uses the ResizeObserver, if given', function(assert) {
+ let roCreated = false;
+ let observeCalled = false;
+ let unobserveCalled = false;
+ let disconnectCalled = false;
+ let sameEl = false;
+
+ class MyResizeObserver {
+ constructor(fn) {
+ roCreated = true;
+ }
+
+ observe(el) {
+ observeCalled = true;
+ this.el = el;
+ }
+
+ unobserve(el) {
+ unobserveCalled = true;
+ sameEl = this.el === el;
+ }
+
+ disconnect() {
+ disconnectCalled = true;
+ }
+ }
+
+ const rm = new ResizeManager(this.player, {ResizeObserver: MyResizeObserver});
+
+ assert.ok(roCreated, 'we intantiated the RO that was passed');
+ assert.ok(observeCalled, 'we observed the RO');
+ assert.equal(rm.resizeObserver_.el, this.player.el(), 'we observed the player el');
+
+ rm.dispose();
+
+ assert.ok(unobserveCalled, 'we unobserve when disposed');
+ assert.ok(sameEl, 'we unobserve the same el as we observed');
+ assert.ok(disconnectCalled, 'we disconnected when disposed');
+});
+
+QUnit.test('ResizeManager triggers `playerresize` when the observer method is called', function(assert) {
+ let observer;
+
+ class MyResizeObserver {
+ constructor(fn) {
+ observer = fn;
+ }
+
+ observe(el) {
+ this.el = el;
+ }
+
+ unobserve(el) {
+ }
+
+ disconnect() {
+ }
+ }
+
+ let playerresizeCalled = 0;
+ const rm = new ResizeManager(this.player, {ResizeObserver: MyResizeObserver});
+
+ this.player.one('playerresize', function() {
+ playerresizeCalled++;
+ });
+ observer();
+
+ this.clock.tick(100);
+
+ assert.equal(playerresizeCalled, 1, 'playerresize was triggered');
+
+ rm.dispose();
+});