1
0
mirror of https://github.com/videojs/video.js.git synced 2024-12-23 02:04:34 +02:00
video.js/test/unit/seek-to-live.test.js
Brandon Casey 2974ad3db7 feat: support seeking during live playback via liveui option (#5511)
When liveui is enabled, allow seeking during the live window, add button that allows you to seek to the live edge and that indicates whether you are at the live edge or not.
2018-12-03 15:31:23 -05:00

98 lines
2.8 KiB
JavaScript

/* eslint-env qunit */
import TestHelpers from './test-helpers.js';
import sinon from 'sinon';
import computedStyle from '../../src/js/utils/computed-style.js';
QUnit.module('SeekToLive', () => {
QUnit.module('live with liveui', {
beforeEach() {
this.clock = sinon.useFakeTimers();
this.player = TestHelpers.makePlayer({liveui: true});
this.seekToLive = this.player.controlBar.seekToLive;
this.getComputedDisplay = () => {
return computedStyle(this.seekToLive.el(), 'display');
};
// mock live state
this.player.duration(Infinity);
},
afterEach() {
this.player.dispose();
this.clock.restore();
}
});
QUnit.test('at live edge if liveTracker says we are', function(assert) {
this.player.liveTracker.behindLiveEdge = () => false;
this.player.liveTracker.trigger('liveedgechange');
assert.ok(this.seekToLive.hasClass('vjs-at-live-edge'), 'has at live edge class');
});
QUnit.test('behind live edge if liveTracker says we are', function(assert) {
this.player.liveTracker.behindLiveEdge = () => true;
this.player.liveTracker.trigger('liveedgechange');
assert.notOk(this.seekToLive.hasClass('vjs-at-live-edge'), 'does not have live edge class');
});
QUnit.test('switch to non live', function(assert) {
this.player.duration(4);
this.player.trigger('durationchange');
assert.equal(this.getComputedDisplay(), 'none', 'is hidden');
});
QUnit.module('live without liveui', {
beforeEach() {
this.clock = sinon.useFakeTimers();
this.player = TestHelpers.makePlayer();
this.seekToLive = this.player.controlBar.seekToLive;
this.getComputedDisplay = () => {
return computedStyle(this.seekToLive.el(), 'display');
};
// mock live state
this.player.duration(Infinity);
},
afterEach() {
this.player.dispose();
this.clock.restore();
}
});
QUnit.test('should be hidden', function(assert) {
assert.equal(this.getComputedDisplay(), 'none', 'is hidden');
});
QUnit.module('not live', {
beforeEach() {
this.player = TestHelpers.makePlayer({liveui: true});
this.seekToLive = this.player.controlBar.seekToLive;
this.getComputedDisplay = () => {
return computedStyle(this.seekToLive.el(), 'display');
};
},
afterEach() {
this.player.dispose();
}
});
QUnit.test('should not show or track', function(assert) {
assert.equal(this.getComputedDisplay(), 'none', 'is hidden');
});
QUnit.test('switch to live', function(assert) {
assert.equal(this.getComputedDisplay(), 'none', 'is hidden');
this.player.duration(Infinity);
this.player.trigger('durationchange');
assert.notEqual(this.getComputedDisplay(), 'none', 'is not hidden');
});
});