Fix all TypeScript tests

This commit is contained in:
Jerko Steiner 2019-11-13 22:06:17 -03:00
parent 4659151892
commit 9e8b353dea
4 changed files with 15 additions and 15 deletions

View File

@ -1,4 +1,4 @@
import React, { ReactEventHandler } from 'react' import React, { ReactEventHandler, ChangeEvent } from 'react'
import classnames from 'classnames' import classnames from 'classnames'
import screenfull from 'screenfull' import screenfull from 'screenfull'
import { Message } from '../actions/ChatActions' import { Message } from '../actions/ChatActions'
@ -72,9 +72,9 @@ extends React.PureComponent<ToolbarProps, ToolbarState> {
handleSendFile = () => { handleSendFile = () => {
this.file.current!.click() this.file.current!.click()
} }
handleSelectFiles: ReactEventHandler<HTMLInputElement> = event => { handleSelectFiles = (event: React.ChangeEvent<HTMLInputElement>) => {
Array Array
.from(this.file.current!.files!) .from(event.target!.files!)
.forEach(file => this.props.onSendFile(file)) .forEach(file => this.props.onSendFile(file))
} }
handleToggleChat = () => { handleToggleChat = () => {

View File

@ -81,8 +81,8 @@ describe('components/Video', () => {
await render() await render()
}) })
it('Mirrored and active propogate to rendered classes', () => { it('Mirrored and active propogate to rendered classes', async () => {
render({ active: true, mirrored: true }) await render({ active: true, mirrored: true })
expect(wrapper.className).toBe('video-container active mirrored') expect(wrapper.className).toBe('video-container active mirrored')
}) })
}) })
@ -91,25 +91,25 @@ describe('components/Video', () => {
describe('src', () => { describe('src', () => {
beforeEach(async () => { beforeEach(async () => {
await render() await render()
delete video.video.current!.srcObject delete video.videoRef.current!.srcObject
}) })
it('updates src only when changed', () => { it('updates src only when changed', () => {
mediaStream = new MediaStream() mediaStream = new MediaStream()
component.setState({ component.setState({
stream: { url: 'test', stream: mediaStream, userId: '' }, stream: { url: 'test', stream: mediaStream, userId: '' },
}) })
expect(video.video.current!.src).toBe('http://localhost/test') expect(video.videoRef.current!.src).toBe('http://localhost/test')
component.setState({ component.setState({
stream: { url: 'test', stream: mediaStream, userId: '' }, stream: { url: 'test', stream: mediaStream, userId: '' },
}) })
}) })
it('updates srcObject only when changed', () => { it('updates srcObject only when changed', () => {
video.video.current!.srcObject = null video.videoRef.current!.srcObject = null
mediaStream = new MediaStream() mediaStream = new MediaStream()
component.setState({ component.setState({
stream: { url: 'test', stream: mediaStream, userId: '' }, stream: { url: 'test', stream: mediaStream, userId: '' },
}) })
expect(video.video.current!.srcObject).toBe(mediaStream) expect(video.videoRef.current!.srcObject).toBe(mediaStream)
component.setState({ component.setState({
stream: { url: 'test', stream: mediaStream, userId: '' }, stream: { url: 'test', stream: mediaStream, userId: '' },
}) })

View File

@ -14,7 +14,7 @@ export interface VideoProps {
} }
export default class Video extends React.PureComponent<VideoProps> { export default class Video extends React.PureComponent<VideoProps> {
video = React.createRef<HTMLVideoElement>() videoRef = React.createRef<HTMLVideoElement>()
static defaultProps = { static defaultProps = {
muted: false, muted: false,
@ -34,10 +34,10 @@ export default class Video extends React.PureComponent<VideoProps> {
} }
componentDidUpdate () { componentDidUpdate () {
const { videos, stream } = this.props const { videos, stream } = this.props
const video = this.video.current! const video = this.videoRef.current!
const mediaStream = stream && stream.stream || null const mediaStream = stream && stream.stream || null
const url = stream && stream.url const url = stream && stream.url
if (!('srcObject' in video as unknown)) { if ('srcObject' in video as unknown) {
if (video.srcObject !== mediaStream) { if (video.srcObject !== mediaStream) {
video.srcObject = mediaStream video.srcObject = mediaStream
} }
@ -57,7 +57,7 @@ export default class Video extends React.PureComponent<VideoProps> {
onClick={this.handleClick} onClick={this.handleClick}
onLoadedMetadata={this.play} onLoadedMetadata={this.play}
playsInline playsInline
ref={this.video} ref={this.videoRef}
muted={muted} muted={muted}
/> />
</div> </div>

View File

@ -21,12 +21,12 @@ describe('window', () => {
delete (navigator as any).webkitGetUserMedia delete (navigator as any).webkitGetUserMedia
}) })
it('calls navigator.mediaDevices.getUserMedia', () => { it('calls navigator.mediaDevices.getUserMedia', async () => {
const promise = Promise.resolve(stream); const promise = Promise.resolve(stream);
(navigator as any).mediaDevices = { (navigator as any).mediaDevices = {
getUserMedia: jest.fn().mockReturnValue(promise), getUserMedia: jest.fn().mockReturnValue(promise),
} }
expect(getUserMedia(constraints)).toBe(promise) expect(await getUserMedia(constraints)).toBe(stream)
}) })
;['getUserMedia', 'webkitGetUserMedia'].forEach((method) => { ;['getUserMedia', 'webkitGetUserMedia'].forEach((method) => {