1
0
mirror of https://github.com/videojs/video.js.git synced 2024-12-25 02:42:10 +02:00
video.js/test/unit/tracks/text-track-list.test.js
Brandon Casey a2b1a33606 fix: cues at startTime 0 do not fire (#4152)
Previously timeupdate would fire before the video was playing, and the tech was not ready. This caused issues when preload was set to auto, because cuechange would fire before the video was even started for cues with a startTime of 0.

Wait for tech to be ready before watching for timeupdate
update unit tests to use TechFaker
Add a unit test to verify that we wait for Tech to be ready.
2017-03-02 14:35:45 -05:00

45 lines
1.2 KiB
JavaScript

/* eslint-env qunit */
import TextTrackList from '../../../src/js/tracks/text-track-list.js';
import TextTrack from '../../../src/js/tracks/text-track.js';
import EventTarget from '../../../src/js/event-target.js';
import TechFaker from '../tech/tech-faker';
QUnit.module('Text Track List');
QUnit.test('trigger "change" event when "modechange" is fired on a track', function(assert) {
const tt = new EventTarget();
const ttl = new TextTrackList([tt]);
let changes = 0;
const changeHandler = function() {
changes++;
};
ttl.on('change', changeHandler);
tt.trigger('modechange');
ttl.off('change', changeHandler);
ttl.onchange = changeHandler;
tt.trigger('modechange');
assert.equal(changes, 2, 'two change events should have fired');
});
QUnit.test('trigger "change" event when mode changes on a TextTrack', function(assert) {
const tt = new TextTrack({tech: new TechFaker()});
const ttl = new TextTrackList([tt]);
let changes = 0;
const changeHandler = function() {
changes++;
};
ttl.on('change', changeHandler);
tt.mode = 'showing';
ttl.off('change', changeHandler);
ttl.onchange = changeHandler;
tt.mode = 'hidden';
tt.mode = 'disabled';
assert.equal(changes, 3, 'three change events should have fired');
});