mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-22 15:37:45 +00:00
[web] Add tests for js/components/ContentView/ContentLoader.jsx
This commit is contained in:
parent
edd363262c
commit
55fd82b8f0
@ -0,0 +1,75 @@
|
|||||||
|
import React from 'react'
|
||||||
|
import renderer from 'react-test-renderer'
|
||||||
|
import ContentLoaderGenerator from '../../../components/ContentView/ContentLoader'
|
||||||
|
import { TFlow } from '../../ducks/tutils'
|
||||||
|
import TestUtils from 'react-dom/test-utils'
|
||||||
|
import mockXMLHttpRequest from 'mock-xmlhttprequest'
|
||||||
|
|
||||||
|
global.XMLHttpRequest = mockXMLHttpRequest
|
||||||
|
|
||||||
|
class tComponent extends React.Component {
|
||||||
|
constructor(props, context){
|
||||||
|
super(props, context)
|
||||||
|
}
|
||||||
|
render() {
|
||||||
|
return (<p>foo</p>)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let tflow = new TFlow(),
|
||||||
|
ContentLoader = ContentLoaderGenerator(tComponent)
|
||||||
|
|
||||||
|
describe('ContentLoader Component', () => {
|
||||||
|
it('should render correctly', () => {
|
||||||
|
let contentLoader = renderer.create(<ContentLoader flow={tflow} message={tflow.response}/>),
|
||||||
|
tree = contentLoader.toJSON()
|
||||||
|
expect(tree).toMatchSnapshot()
|
||||||
|
})
|
||||||
|
|
||||||
|
let contentLoader = TestUtils.renderIntoDocument(<ContentLoader flow={tflow} message={tflow.response}/>)
|
||||||
|
|
||||||
|
it('should handle updateContent', () => {
|
||||||
|
tflow.response.content = 'foo'
|
||||||
|
contentLoader.updateContent({flow: tflow, message: tflow.response})
|
||||||
|
expect(contentLoader.state.request).toEqual(undefined)
|
||||||
|
expect(contentLoader.state.content).toEqual('foo')
|
||||||
|
// when content length is 0 or null
|
||||||
|
tflow.response.contentLength = 0
|
||||||
|
tflow.response.content = undefined
|
||||||
|
contentLoader.updateContent({flow: tflow, message: tflow.response})
|
||||||
|
expect(contentLoader.state.request).toEqual(undefined)
|
||||||
|
expect(contentLoader.state.content).toEqual('')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should handle componentWillReceiveProps', () => {
|
||||||
|
contentLoader.updateContent = jest.fn()
|
||||||
|
contentLoader.componentWillReceiveProps({flow: tflow, message: tflow.request})
|
||||||
|
expect(contentLoader.updateContent).toBeCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should handle requestComplete', () => {
|
||||||
|
expect(contentLoader.requestComplete(tflow.request, {})).toEqual(undefined)
|
||||||
|
// request == this.state.request
|
||||||
|
contentLoader.state.request = tflow.request
|
||||||
|
contentLoader.requestComplete(tflow.request, {})
|
||||||
|
expect(contentLoader.state.content).toEqual(tflow.request.responseText)
|
||||||
|
expect(contentLoader.state.request).toEqual(undefined)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should handle requestFailed', () => {
|
||||||
|
console.error = jest.fn()
|
||||||
|
expect(contentLoader.requestFailed(tflow.request, {})).toEqual(undefined)
|
||||||
|
//request == this.state.request
|
||||||
|
contentLoader.state.request = tflow.request
|
||||||
|
contentLoader.requestFailed(tflow.request, 'foo error')
|
||||||
|
expect(contentLoader.state.content).toEqual('Error getting content.')
|
||||||
|
expect(contentLoader.state.request).toEqual(undefined)
|
||||||
|
expect(console.error).toBeCalledWith('foo error')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should handle componentWillUnmount', () => {
|
||||||
|
contentLoader.state.request = { abort : jest.fn() }
|
||||||
|
contentLoader.componentWillUnmount()
|
||||||
|
expect(contentLoader.state.request.abort).toBeCalled()
|
||||||
|
})
|
||||||
|
})
|
@ -0,0 +1,11 @@
|
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`ContentLoader Component should render correctly 1`] = `
|
||||||
|
<div
|
||||||
|
className="text-center"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
className="fa fa-spinner fa-spin"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
`;
|
Loading…
Reference in New Issue
Block a user