jest.mock('../../window.js')
import React from 'react'
import ReactDOM from 'react-dom'
import TestUtils from 'react-dom/test-utils'
import Video from '../Video.js'
import { MediaStream } from '../../window.js'
describe('components/Video', () => {
class VideoWrapper extends React.PureComponent {
static propTypes = Video.propTypes
constructor () {
super()
this.state = {}
}
render () {
return
}
}
let component, videos, video, onClick, mediaStream, url, wrapper
function render (flags = {}) {
videos = {}
onClick = jest.fn()
mediaStream = new MediaStream()
component = TestUtils.renderIntoDocument(
)
wrapper = ReactDOM.findDOMNode(component)
video = TestUtils.findRenderedComponentWithType(component, Video)
}
describe('render', () => {
it('should not fail', () => {
render({})
})
it('Mirrored and active propogate to rendered classes', () => {
render({ active: true, mirrored: true })
expect(wrapper.className).toBe('video-container active mirrored')
})
})
describe('componentDidUpdate', () => {
describe('src', () => {
beforeEach(() => {
render()
delete video.refs.video.srcObject
})
it('updates src only when changed', () => {
mediaStream = new MediaStream()
component.setState({
stream: { url: 'test', mediaStream }
})
expect(video.refs.video.src).toBe('http://localhost/test')
component.setState({
stream: { url: 'test', mediaStream }
})
})
it('updates srcObject only when changed', () => {
video.refs.video.srcObject = null
mediaStream = new MediaStream()
component.setState({
stream: { url: 'test', mediaStream }
})
expect(video.refs.video.srcObject).toBe(mediaStream)
component.setState({
stream: { url: 'test', mediaStream }
})
})
})
})
})