summaryrefslogtreecommitdiff
path: root/javascript/videojs/test/unit/control-bar/text-track-controls/text-track-menu-item.test.js
blob: 80fa1f8a74043bd46e0a19505181f79936dd6a0c (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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/* eslint-env qunit */
import TextTrackMenuItem from '../../../../src/js/control-bar/text-track-controls/text-track-menu-item.js';
import OffTextTrackMenuItem from '../../../../src/js/control-bar/text-track-controls/off-text-track-menu-item.js';
import CaptionSettingsMenuItem from '../../../../src/js/control-bar/text-track-controls/caption-settings-menu-item.js';
import TestHelpers from '../../test-helpers.js';
import videojs from '../../../../src/js/video.js';

QUnit.module('TextTrackMenuItem', {
  beforeEach(assert) {
    this.player = TestHelpers.makePlayer();
  },
  afterEach(assert) {
    this.player.dispose();
  }
});

QUnit.test('clicking should enable the selected track', function(assert) {
  assert.expect(2);

  const foo = this.player.addTextTrack('captions', 'foo', 'en');

  const fooItem = new TextTrackMenuItem(this.player, {
    track: foo
  });

  assert.strictEqual(foo.mode, 'disabled', 'track "foo" begins "disabled"');

  fooItem.trigger('click');

  assert.strictEqual(foo.mode, 'showing', 'clicking set track "foo" to "showing"');

  fooItem.dispose();
});

QUnit.test('clicking should disable non-selected tracks of the relevant kind(s)', function(assert) {
  assert.expect(16);

  const foo = this.player.addTextTrack('captions', 'foo', 'en');
  const bar = this.player.addTextTrack('captions', 'bar', 'es');
  const bip = this.player.addTextTrack('subtitles', 'bip', 'fr');
  const bop = this.player.addTextTrack('metadata', 'bop');

  bop.mode = 'hidden';

  const fooItem = new TextTrackMenuItem(this.player, {
    track: foo,
    kinds: ['captions', 'subtitles']
  });

  const barItem = new TextTrackMenuItem(this.player, {
    track: bar,
    kinds: ['captions', 'subtitles']
  });

  const bipItem = new TextTrackMenuItem(this.player, {
    track: bip,
    kinds: ['captions', 'subtitles']
  });

  assert.strictEqual(foo.mode, 'disabled', 'captions track "foo" begins "disabled"');
  assert.strictEqual(bar.mode, 'disabled', 'captions track "bar" begins "disabled"');
  assert.strictEqual(bip.mode, 'disabled', 'subtitles track "bip" begins "disabled"');
  assert.strictEqual(bop.mode, 'hidden', 'metadata track "bop" is "hidden"');

  barItem.trigger('click');

  assert.strictEqual(foo.mode, 'disabled', 'captions track "foo" is still "disabled"');
  assert.strictEqual(bar.mode, 'showing', 'captions track "bar" is now "showing"');
  assert.strictEqual(bip.mode, 'disabled', 'subtitles track "bip" is still "disabled"');
  assert.strictEqual(bop.mode, 'hidden', 'metadata track "bop" is still "hidden"');

  fooItem.trigger('click');

  assert.strictEqual(foo.mode, 'showing', 'captions track "foo" is now "showing"');
  assert.strictEqual(bar.mode, 'disabled', 'captions track "bar" is now "disabled"');
  assert.strictEqual(bip.mode, 'disabled', 'subtitles track "bip" is still "disabled"');
  assert.strictEqual(bop.mode, 'hidden', 'metadata track "bop" is still "hidden"');

  bipItem.trigger('click');

  assert.strictEqual(foo.mode, 'disabled', 'captions track "foo" is now "disabled"');
  assert.strictEqual(bar.mode, 'disabled', 'captions track "bar" is still "disabled"');
  assert.strictEqual(bip.mode, 'showing', 'subtitles track "bip" is now "showing"');
  assert.strictEqual(bop.mode, 'hidden', 'metadata track "bop" is still "hidden"');

  fooItem.dispose();
  barItem.dispose();
  bipItem.dispose();
});

QUnit.test('should localize meu items on languagechage', function(assert) {
  const OffItem = new OffTextTrackMenuItem(this.player, {kind: 'subtitles'});
  const SettingsItem = new CaptionSettingsMenuItem(this.player, {kind: 'subtitles'});

  videojs.addLanguage('test', {
    'subtitles off': 'SUBSOFF',
    'subtitles settings': 'SUBSSETTINGS'
  });

  this.player.language('test');

  assert.equal(OffItem.$('.vjs-menu-item-text').textContent, 'SUBSOFF', 'subtitles settings text updates');
  assert.equal(SettingsItem.$('.vjs-menu-item-text').textContent, 'SUBSSETTINGS', 'subtitles settings text updates');
});