summaryrefslogtreecommitdiff
path: root/javascript/videojs/test/unit/tracks/html-track-element.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'javascript/videojs/test/unit/tracks/html-track-element.test.js')
-rw-r--r--javascript/videojs/test/unit/tracks/html-track-element.test.js81
1 files changed, 81 insertions, 0 deletions
diff --git a/javascript/videojs/test/unit/tracks/html-track-element.test.js b/javascript/videojs/test/unit/tracks/html-track-element.test.js
new file mode 100644
index 0000000..b46b072
--- /dev/null
+++ b/javascript/videojs/test/unit/tracks/html-track-element.test.js
@@ -0,0 +1,81 @@
+/* eslint-env qunit */
+import HTMLTrackElement from '../../../src/js/tracks/html-track-element.js';
+import TechFaker from '../tech/tech-faker';
+
+QUnit.module('HTML Track Element', {
+ beforeEach() {
+ this.tech = new TechFaker();
+ },
+ afterEach() {
+ this.tech.dispose();
+ this.tech = null;
+ }
+});
+
+QUnit.test('html track element requires a tech', function(assert) {
+ assert.throws(
+ function() {
+ return new HTMLTrackElement();
+ },
+ new Error('A tech was not provided.'),
+ 'a tech is required for html track element'
+ );
+});
+
+QUnit.test('can create a html track element with various properties', function(assert) {
+ const kind = 'chapters';
+ const label = 'English';
+ const language = 'en';
+
+ const htmlTrackElement = new HTMLTrackElement({
+ kind,
+ label,
+ language,
+ tech: this.tech
+ });
+
+ assert.equal(typeof htmlTrackElement.default, 'undefined', 'we have a default');
+ assert.equal(htmlTrackElement.kind, kind, 'we have a kind');
+ assert.equal(htmlTrackElement.label, label, 'we have a label');
+ assert.equal(htmlTrackElement.readyState, 0, 'we have a readyState');
+ assert.equal(htmlTrackElement.srclang, language, 'we have a srclang');
+
+ htmlTrackElement.track.off();
+});
+
+QUnit.test('defaults when items not provided', function(assert) {
+ const htmlTrackElement = new HTMLTrackElement({
+ tech: this.tech
+ });
+
+ assert.equal(typeof htmlTrackElement.default, 'undefined', 'we have a default');
+ assert.equal(htmlTrackElement.kind, 'subtitles', 'we have a kind');
+ assert.equal(htmlTrackElement.label, '', 'we have a label');
+ assert.equal(htmlTrackElement.readyState, 0, 'we have a readyState');
+ assert.equal(typeof htmlTrackElement.src, 'undefined', 'we have a src');
+ assert.equal(htmlTrackElement.srclang, '', 'we have a srclang');
+ assert.equal(htmlTrackElement.track.cues.length, 0, 'we have a track');
+
+ htmlTrackElement.track.off();
+});
+
+QUnit.test('fires loadeddata when track cues become populated', function(assert) {
+ let changes = 0;
+ const loadHandler = function() {
+ changes++;
+ };
+ const htmlTrackElement = new HTMLTrackElement({
+ tech: this.tech
+ });
+
+ htmlTrackElement.addEventListener('load', loadHandler);
+
+ // trigger loaded cues event
+ htmlTrackElement.track.trigger('loadeddata');
+
+ assert.equal(changes, 1, 'a loadeddata event trigger addEventListener');
+ assert.equal(htmlTrackElement.readyState, 2, 'readyState is loaded');
+
+ htmlTrackElement.track.off();
+ htmlTrackElement.off('load');
+});