summaryrefslogtreecommitdiff
path: root/javascript/videojs/test/unit/event-target.test.js
blob: 3155655955f93b01ea83454128a45f3277f57186 (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
/* eslint-env qunit */
import EventTarget from '../../src/js/event-target.js';
import sinon from 'sinon';

const { test } = QUnit;

QUnit.module('EventTarget', {
  beforeEach() {
    this.clock = sinon.useFakeTimers();
  },
  afterEach() {
    this.clock.restore();
  }
});

test('EventTarget queueTrigger queues the event', function(t) {
  const et = new EventTarget();
  let changes = 0;
  const changeHandler = function() {
    changes++;
  };

  et.on('change', changeHandler);

  et.queueTrigger('change');
  t.equal(changes, 0, 'EventTarget did not trigger a change event yet');

  this.clock.tick(1);
  t.equal(changes, 1, 'EventTarget triggered a change event once the clock ticked');
  et.off('change', changeHandler);
});

test('EventTarget will only trigger event once with queueTrigger', function(t) {
  const et = new EventTarget();
  let changes = 0;
  const changeHandler = function() {
    changes++;
  };

  et.on('change', changeHandler);

  et.queueTrigger('change');
  t.equal(changes, 0, 'EventTarget did not trigger a change event yet');
  et.queueTrigger('change');
  t.equal(changes, 0, 'EventTarget did not trigger a change event yet');
  et.queueTrigger('change');
  t.equal(changes, 0, 'EventTarget did not trigger a change event yet');
  et.queueTrigger('change');

  this.clock.tick(100);
  t.equal(changes, 1, 'EventTarget *only* triggered a change event once');

  et.off('change', changeHandler);
});