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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
/* eslint-env qunit */
import TestHelpers from '../../test-helpers';
import sinon from 'sinon';
import { createTimeRange } from '../../../../src/js/utils/time';
import videojs from '../../../../src/js/video.js';
QUnit.module('SkipForwardButton');
QUnit.test('is not visible if option is not set', function(assert) {
const player = TestHelpers.makePlayer({});
const button = player.controlBar.skipForward;
assert.expect(1);
assert.ok(button.hasClass('vjs-hidden'), 'has the vjs-hidden class');
player.dispose();
});
QUnit.test('is not visible if option is set with an invalid config', function(assert) {
const player = TestHelpers.makePlayer({controlBar: {skipButtons: {forward: 4}}});
const button = player.controlBar.skipForward;
assert.expect(1);
assert.ok(button.hasClass('vjs-hidden'), 'has the vjs-hidden class');
player.dispose();
});
QUnit.test('is visible if option is set with a valid config', function(assert) {
const player = TestHelpers.makePlayer({controlBar: {skipButtons: {forward: 5}}});
const button = player.controlBar.skipForward;
assert.expect(2);
assert.notOk(button.hasClass('vjs-hidden'), 'button is not hidden');
assert.ok(button.hasClass('vjs-skip-forward-5'), 'button shows correct icon');
player.dispose();
});
QUnit.test('control text should specify how many seconds forward can be skipped', function(assert) {
const player = TestHelpers.makePlayer({controlBar: {skipButtons: {forward: 5}}});
const button = player.controlBar.skipForward;
assert.expect(1);
assert.strictEqual(button.controlText_, 'Skip forward 5 seconds', 'control text specifies seconds forward');
player.dispose();
});
QUnit.test('skips to end of video if time remaining is less than configured skip forward time', function(assert) {
const player = TestHelpers.makePlayer({controlBar: {skipButtons: {forward: 30}}});
const button = player.controlBar.skipForward;
player.currentTime(25);
player.duration(30);
const curTimeSpy = sinon.spy(player, 'currentTime');
button.trigger('click');
assert.expect(1);
assert.equal(curTimeSpy.getCall(1).args[0], 30, 'player current time is set to end of video');
player.dispose();
});
QUnit.test('skips to end of seekable range in live video if time remaining is less than configured skip forward time', function(assert) {
const player = TestHelpers.makePlayer({controlBar: {skipButtons: {forward: 30}}});
const button = player.controlBar.skipForward;
player.options_.liveui = true;
player.seekable = () => createTimeRange(0, 20);
player.duration(Infinity);
const curTimeSpy = sinon.spy(player, 'currentTime');
button.trigger('click');
assert.expect(1);
assert.equal(curTimeSpy.getCall(1).args[0], 20, 'player current time is set to end of seekable range in live video');
player.dispose();
});
QUnit.test('skips forward in live video by configured skip forward time amount', function(assert) {
const player = TestHelpers.makePlayer({controlBar: {skipButtons: {forward: 10}}});
const button = player.controlBar.skipForward;
player.options_.liveui = true;
player.seekable = () => createTimeRange(0, 45);
player.duration(Infinity);
const curTimeSpy = sinon.spy(player, 'currentTime');
button.trigger('click');
assert.expect(1);
assert.equal(curTimeSpy.getCall(1).args[0], 10, 'player current time is set 10 seconds forward in live video');
player.dispose();
});
QUnit.test('skips forward in video by configured skip forward time amount', function(assert) {
const player = TestHelpers.makePlayer({controlBar: {skipButtons: {forward: 30}}});
const button = player.controlBar.skipForward;
player.currentTime(0);
player.duration(50);
const curTimeSpy = sinon.spy(player, 'currentTime');
button.trigger('click');
assert.expect(1);
assert.equal(curTimeSpy.getCall(1).args[0], 30, 'player current time set 30 seconds forward after button click');
player.dispose();
});
QUnit.test('localizes on languagechange', function(assert) {
const player = TestHelpers.makePlayer({controlBar: {skipButtons: {forward: 30}}});
const button = player.controlBar.skipForward;
videojs.addLanguage('test', {'Skip forward {1} seconds': '{1} FORWARD'});
player.language('test');
assert.equal(button.$('.vjs-control-text').textContent, '30 FORWARD', 'control text updates on languagechange');
player.dispose();
});
QUnit.test('skips forward only if the duration is valid', function(assert) {
const player = TestHelpers.makePlayer({controlBar: {skipButtons: {forward: 5}}});
const currentTimeSpy = sinon.spy(player, 'currentTime');
const button = player.controlBar.skipForward;
button.trigger('click');
assert.ok(currentTimeSpy.notCalled, 'currentTime was not called');
player.duration(0);
button.trigger('click');
assert.ok(currentTimeSpy.called, 'currentTime was called');
currentTimeSpy.restore();
player.dispose();
});
|