UNPKG

video-ad-sdk

Version:

VAST/VPAID SDK that allows video ads to be played on top of any player

55 lines (43 loc) 1.53 kB
import {linearEvents} from '../../../../../tracker' import {onRewind} from '../onRewind' const {rewind} = linearEvents let videoElement: HTMLVideoElement beforeEach(() => { videoElement = document.createElement('video') Object.defineProperty(videoElement, 'duration', { value: 100, writable: true }) Object.defineProperty(videoElement, 'currentTime', { value: 0, writable: true }) }) afterEach(() => { ;(videoElement as any) = null }) test('onRewind must call the callback with rewind when there is a rewind of the current video', () => { const callback = jest.fn() const disconnect = onRewind({videoElement} as any, callback) videoElement.currentTime = 10 videoElement.dispatchEvent(new Event('timeupdate')) expect(callback).toHaveBeenCalledTimes(0) videoElement.currentTime = 25 videoElement.dispatchEvent(new Event('timeupdate')) expect(callback).toHaveBeenCalledTimes(0) videoElement.currentTime = 24.5 videoElement.dispatchEvent(new Event('timeupdate')) expect(callback).toHaveBeenCalledTimes(0) videoElement.currentTime = 15 videoElement.dispatchEvent(new Event('timeupdate')) expect(callback).toHaveBeenCalledTimes(1) expect(callback).toHaveBeenCalledWith(rewind) callback.mockClear() disconnect() videoElement.currentTime = 50 videoElement.dispatchEvent(new Event('timeupdate')) videoElement.currentTime = 25 videoElement.dispatchEvent(new Event('timeupdate')) videoElement.currentTime = 10 expect(callback).toHaveBeenCalledTimes(0) })