diff options
Diffstat (limited to 'javascript/videojs/test/unit/seek-to-live.test.js')
| -rw-r--r-- | javascript/videojs/test/unit/seek-to-live.test.js | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/javascript/videojs/test/unit/seek-to-live.test.js b/javascript/videojs/test/unit/seek-to-live.test.js new file mode 100644 index 0000000..af95ad0 --- /dev/null +++ b/javascript/videojs/test/unit/seek-to-live.test.js @@ -0,0 +1,92 @@ +/* eslint-env qunit */ +import TestHelpers from './test-helpers.js'; +import sinon from 'sinon'; +import { computedStyle } from '../../src/js/utils/dom.js'; +import { createTimeRange } from '../../src/js/utils/time.js'; + +QUnit.module('SeekToLive', { + beforeEach() { + this.clock = sinon.useFakeTimers(); + this.player = TestHelpers.makePlayer(); + this.seekToLive = this.player.controlBar.seekToLive; + this.getComputedDisplay = () => { + return computedStyle(this.seekToLive.el(), 'display'); + }; + + this.mockLiveui = () => { + this.player.paused = () => false; + this.player.hasStarted = () => true; + this.player.options_.liveui = true; + this.player.seekable = () => createTimeRange(0, 45); + this.player.currentTime = () => this.player.liveTracker.liveCurrentTime(); + this.player.duration(Infinity); + }; + }, + afterEach() { + this.player.dispose(); + this.clock.restore(); + } +}); + +QUnit.test('liveui enabled, can switch between at and behind live edge ', function(assert) { + this.mockLiveui(); + + assert.notEqual(this.getComputedDisplay(), 'none', 'is not hidden'); + assert.ok(this.seekToLive.hasClass('vjs-at-live-edge'), 'has at live edge class'); + + this.player.currentTime = () => 0; + this.player.seekable = () => createTimeRange(0, 38); + this.clock.tick(30); + + assert.notOk(this.seekToLive.hasClass('vjs-at-live-edge'), 'does not have at live edge class'); +}); + +QUnit.test('liveui enabled can show/hide on durationchange', function(assert) { + // start out non-live + assert.equal(this.getComputedDisplay(), 'none', 'is hidden'); + assert.notOk(this.seekToLive.hasClass('vjs-at-live-edge'), 'does not have at live edge class'); + + // switch to live + this.mockLiveui(); + + assert.notEqual(this.getComputedDisplay(), 'none', 'is not hidden'); + assert.ok(this.seekToLive.hasClass('vjs-at-live-edge'), 'has at live edge class'); + + // switch to non-live + this.player.duration(20); + + assert.equal(this.getComputedDisplay(), 'none', 'is hidden'); + assert.notOk(this.seekToLive.hasClass('vjs-at-live-edge'), 'does not have at live edge class'); + + // back to live again. + this.mockLiveui(); + + assert.notEqual(this.getComputedDisplay(), 'none', 'is not hidden'); + assert.ok(this.seekToLive.hasClass('vjs-at-live-edge'), 'has at live edge class'); +}); + +QUnit.test('liveui disabled live window is never shown', function(assert) { + assert.equal(this.getComputedDisplay(), 'none', 'is hidden'); + assert.notOk(this.seekToLive.hasClass('vjs-at-live-edge'), 'does not have at live edge class'); + + this.player.paused = () => false; + this.player.hasStarted = () => true; + this.player.currentTime = () => this.player.liveTracker.liveCurrentTime(); + + // liveui false, seekable range is good though + this.player.options_.liveui = false; + this.player.duration(Infinity); + + assert.equal(this.getComputedDisplay(), 'none', 'is hidden'); + assert.notOk(this.seekToLive.hasClass('vjs-at-live-edge'), 'does not have at live edge class'); + + this.player.duration(10); + + // liveui false + this.player.options_.liveui = false; + this.player.seekable = () => createTimeRange(0, 19); + this.player.duration(Infinity); + + assert.equal(this.getComputedDisplay(), 'none', 'is hidden'); + assert.notOk(this.seekToLive.hasClass('vjs-at-live-edge'), 'does not have at live edge class'); +}); |
