it("must wait until the tech is ready to resume the player", function () { var clock = sinon.useFakeTimers(); snapshot.playing = true; snapshot.currentTime = 10; playerUtils.isReadyToResume.returns(false); player.currentTime.returns(0); player.play.reset(); playerUtils.restorePlayerSnapshot(player, snapshot); player.trigger('canplay'); sinon.assert.notCalled(player.play); sinon.assert.notCalled(player.currentTime); clock.tick(1000); playerUtils.isReadyToResume.returns(false); clock.tick(1100); sinon.assert.calledWithExactly(player.currentTime, snapshot.currentTime); player.trigger('seeked'); sinon.assert.called(player.play); clock.restore(); });
it("must resume the video if the tech is ready to resume", function () { snapshot.playing = true; snapshot.currentTime = 10; playerUtils.isReadyToResume.returns(true); player.currentTime.returns(0); player.play.reset(); player.currentTime.reset(); playerUtils.restorePlayerSnapshot(player, snapshot); sinon.assert.notCalled(player.play); player.trigger('canplay'); sinon.assert.calledWithExactly(player.currentTime, snapshot.currentTime); player.trigger('seeked'); sinon.assert.called(player.play); });
it("must try to resume the video event the video el does not triggers the 'canplay' evt", function(){ var clock = sinon.useFakeTimers(); snapshot.playing = true; snapshot.currentTime = 10; playerUtils.isReadyToResume.returns(true); player.currentTime.returns(0); player.play.reset(); player.currentTime.reset(); playerUtils.restorePlayerSnapshot(player, snapshot); sinon.assert.notCalled(player.play); clock.tick(1000); sinon.assert.calledWithExactly(player.currentTime, snapshot.currentTime); player.trigger('seeked'); sinon.assert.called(player.play); clock.restore(); });
it("must log a warning if the resume action throws an exception after waiting for the tech to be ready", function () { var clock = sinon.useFakeTimers(); sinon.stub(videojs.log, 'warn'); snapshot.playing = true; snapshot.currentTime = 0; playerUtils.isReadyToResume.returns(false); player.currentTime.returns(0); player.play.reset(); playerUtils.restorePlayerSnapshot(player, snapshot); player.trigger('canplay'); sinon.assert.notCalled(player.play); sinon.assert.notCalled(player.currentTime); player.play.throws(); clock.tick(2000); sinon.assert.calledWith(videojs.log.warn, 'Failed to resume the content after an advertisement'); clock.restore(); });
afterEach(function () { player.play.restore(); playerUtils.isReadyToResume.restore(); player.currentTime.restore(); });