summaryrefslogtreecommitdiff
path: root/javascript/videojs/test/unit/tracks/html-track-element-list.test.js
blob: da25d36cdebf1603bd650664a84dddb6d8e3be3a (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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/* eslint-env qunit */
import HTMLTrackElementList from '../../../src/js/tracks/html-track-element-list.js';
import TextTrack from '../../../src/js/tracks/text-track.js';

const defaultTech = {
  textTracks() {},
  on() {},
  off() {},
  one() {},
  currentTime() {}
};

const track1 = new TextTrack({
  id: 1,
  tech: defaultTech
});
const track2 = new TextTrack({
  id: 2,
  tech: defaultTech
});

const genericHtmlTrackElements = [{
  tech() {},
  kind: 'captions',
  track: track1
}, {
  tech() {},
  kind: 'chapters',
  track: track2
}];

QUnit.module('HTML Track Element List');

QUnit.test('HTMLTrackElementList\'s length is set correctly', function(assert) {
  const htmlTrackElementList = new HTMLTrackElementList(genericHtmlTrackElements);

  assert.equal(
    htmlTrackElementList.length,
    genericHtmlTrackElements.length,
    `the length is ${genericHtmlTrackElements.length}`
  );
});

QUnit.test('can get html track element by track', function(assert) {
  const htmlTrackElementList = new HTMLTrackElementList(genericHtmlTrackElements);

  assert.equal(
    htmlTrackElementList.getTrackElementByTrack_(track1).kind,
    'captions',
    'track1 has kind of captions'
  );
  assert.equal(
    htmlTrackElementList.getTrackElementByTrack_(track2).kind,
    'chapters',
    'track2 has kind of captions'
  );
});

QUnit.test('length is updated when new tracks are added or removed', function(assert) {
  const htmlTrackElementList = new HTMLTrackElementList(genericHtmlTrackElements);

  htmlTrackElementList.addTrackElement_({tech() {}});
  assert.equal(
    htmlTrackElementList.length,
    genericHtmlTrackElements.length + 1,
    `the length is ${genericHtmlTrackElements.length + 1}`
  );
  htmlTrackElementList.addTrackElement_({tech() {}});
  assert.equal(
    htmlTrackElementList.length,
    genericHtmlTrackElements.length + 2,
    `the length is ${genericHtmlTrackElements.length + 2}`
  );

  htmlTrackElementList.removeTrackElement_(htmlTrackElementList.getTrackElementByTrack_(track1));
  assert.equal(
    htmlTrackElementList.length,
    genericHtmlTrackElements.length + 1,
    `the length is ${genericHtmlTrackElements.length + 1}`
  );
  htmlTrackElementList.removeTrackElement_(htmlTrackElementList.getTrackElementByTrack_(track2));
  assert.equal(
    htmlTrackElementList.length,
    genericHtmlTrackElements.length,
    `the length is ${genericHtmlTrackElements.length}`
  );
});