summaryrefslogtreecommitdiff
path: root/javascript/videojs/test/unit/tracks/track.test.js
blob: e5d9b3f87368c637f691177557ef451a1faff762 (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
55
56
57
58
/* eslint-env qunit */
import TrackBaseline from './track-baseline';
import Track from '../../../src/js/tracks/track.js';
import TextTrackList from '../../../src/js/tracks/text-track-list.js';

const defaultTech = {
  textTracks() {
    return new TextTrackList();
  },
  on() {},
  off() {},
  currentTime() {}
};

// do baseline track testing
QUnit.module('Track');

TrackBaseline(Track, {
  id: '1',
  kind: 'subtitles',
  mode: 'disabled',
  label: 'English',
  language: 'en'
  // tech is added in baseline
  // tech: new TechFaker()
});

QUnit.test('defaults when items not provided', function(assert) {
  const track = new Track({
    tech: defaultTech
  });

  assert.equal(track.kind, '', 'kind defaulted to empty string');
  assert.equal(track.label, '', 'label defaults to empty string');
  assert.equal(track.language, '', 'language defaults to empty string');
  assert.ok(track.id.match(/vjs_track_\d+/), 'id defaults to vjs_track_GUID');
});

QUnit.test('label is updated and labelchange event is fired when label is changed', function(assert) {
  const track = new Track({
    tech: defaultTech
  });
  let eventsTriggered = 0;

  track.addEventListener('labelchange', () => {
    eventsTriggered++;
  });

  track.label = 'English (auto)';
  assert.equal(eventsTriggered, 1, 'one label change');
  assert.equal(track.label, 'English (auto)');

  track.label = 'English (auto)';
  assert.equal(eventsTriggered, 1, 'additional label change not fired when new label is the same as old');
  assert.equal(track.label, 'English (auto)');

  track.off();
});