summaryrefslogtreecommitdiff
path: root/javascript/videojs/test/unit/resize-manager.test.js
blob: ad6f5d48eda5309298d827ddd24e660d8cc9cdb8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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();
});