summaryrefslogtreecommitdiff
path: root/javascript/videojs/test/unit/tracks/audio-tracks.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'javascript/videojs/test/unit/tracks/audio-tracks.test.js')
-rw-r--r--javascript/videojs/test/unit/tracks/audio-tracks.test.js110
1 files changed, 110 insertions, 0 deletions
diff --git a/javascript/videojs/test/unit/tracks/audio-tracks.test.js b/javascript/videojs/test/unit/tracks/audio-tracks.test.js
new file mode 100644
index 0000000..70327e0
--- /dev/null
+++ b/javascript/videojs/test/unit/tracks/audio-tracks.test.js
@@ -0,0 +1,110 @@
+/* eslint-env qunit */
+import Html5 from '../../../src/js/tech/html5.js';
+import TestHelpers from '../test-helpers.js';
+import sinon from 'sinon';
+
+QUnit.module('Audio Tracks', {
+ beforeEach(assert) {
+ this.clock = sinon.useFakeTimers();
+ },
+ afterEach(assert) {
+ this.clock.restore();
+ }
+});
+
+QUnit.test('Player track methods call the tech', function(assert) {
+ const player = TestHelpers.makePlayer();
+ let calls = 0;
+
+ player.tech_.audioTracks = function() {
+ calls++;
+ };
+
+ player.audioTracks();
+
+ assert.equal(calls, 1, 'audioTrack defers to the tech');
+ player.dispose();
+});
+
+QUnit.test('listen to remove and add track events in native audio tracks', function(assert) {
+ const oldTestVid = Html5.TEST_VID;
+ const oldAudioTracks = Html5.prototype.audioTracks;
+ const events = {};
+
+ Html5.prototype.audioTracks = function() {
+ return {
+ removeEventListener() {},
+ addEventListener(type, handler) {
+ events[type] = true;
+ }
+ };
+ };
+
+ Html5.TEST_VID = {
+ audioTracks: []
+ };
+
+ const player = {
+ // Function.prototype is a built-in no-op function.
+ controls() {},
+ ready() {},
+ options() {
+ return {};
+ },
+ addChild() {},
+ id() {},
+ el() {
+ return {
+ insertBefore() {},
+ appendChild() {}
+ };
+ }
+ };
+
+ player.player_ = player;
+ player.options_ = {};
+
+ const html = new Html5({});
+
+ assert.ok(events.removetrack, 'removetrack listener was added');
+ assert.ok(events.addtrack, 'addtrack listener was added');
+
+ Html5.TEST_VID = oldTestVid;
+ Html5.prototype.audioTracks = oldAudioTracks;
+ html.dispose();
+});
+
+QUnit.test('html5 tech supports native audio tracks if the video supports it', function(assert) {
+ const oldTestVid = Html5.TEST_VID;
+
+ Html5.TEST_VID = {
+ audioTracks: []
+ };
+
+ assert.ok(Html5.supportsNativeAudioTracks(), 'native audio tracks are supported');
+
+ Html5.TEST_VID = oldTestVid;
+});
+
+QUnit.test('html5 tech does not support native audio tracks if the video does not supports it', function(assert) {
+ const oldTestVid = Html5.TEST_VID;
+
+ Html5.TEST_VID = {};
+
+ assert.ok(!Html5.supportsNativeAudioTracks(), 'native audio tracks are not supported');
+
+ Html5.TEST_VID = oldTestVid;
+});
+
+QUnit.test('when switching techs, we should not get a new audio track', function(assert) {
+ const player = TestHelpers.makePlayer();
+
+ player.loadTech_('TechFaker');
+ const firstTracks = player.audioTracks();
+
+ player.loadTech_('TechFaker');
+ const secondTracks = player.audioTracks();
+
+ assert.ok(firstTracks === secondTracks, 'the tracks are equal');
+ player.dispose();
+});