diff options
Diffstat (limited to 'javascript/videojs/test/unit/event-target.test.js')
| -rw-r--r-- | javascript/videojs/test/unit/event-target.test.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/javascript/videojs/test/unit/event-target.test.js b/javascript/videojs/test/unit/event-target.test.js new file mode 100644 index 0000000..3155655 --- /dev/null +++ b/javascript/videojs/test/unit/event-target.test.js @@ -0,0 +1,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); +}); |
