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
text/typescript
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)
})