aboutsummaryrefslogtreecommitdiffstats
path: root/web/src
diff options
context:
space:
mode:
authorMatthew Shao <me@matshao.com>2017-06-08 11:09:29 +0800
committerMatthew Shao <me@matshao.com>2017-06-08 11:09:29 +0800
commit55fd82b8f012a2d9b53ad203184a4503d8963613 (patch)
treec7b600ed5cbdade0c8fa5773e97480c7443e5ef9 /web/src
parentedd363262c0354b6a1926c5c79ceb59dca656b4f (diff)
downloadmitmproxy-55fd82b8f012a2d9b53ad203184a4503d8963613.tar.gz
mitmproxy-55fd82b8f012a2d9b53ad203184a4503d8963613.tar.bz2
mitmproxy-55fd82b8f012a2d9b53ad203184a4503d8963613.zip
[web] Add tests for js/components/ContentView/ContentLoader.jsx
Diffstat (limited to 'web/src')
-rw-r--r--web/src/js/__tests__/components/ContentView/ContentLoaderSpec.js75
-rw-r--r--web/src/js/__tests__/components/ContentView/__snapshots__/ContentLoaderSpec.js.snap11
2 files changed, 86 insertions, 0 deletions
diff --git a/web/src/js/__tests__/components/ContentView/ContentLoaderSpec.js b/web/src/js/__tests__/components/ContentView/ContentLoaderSpec.js
new file mode 100644
index 00000000..f5e18442
--- /dev/null
+++ b/web/src/js/__tests__/components/ContentView/ContentLoaderSpec.js
@@ -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()
+ })
+})
diff --git a/web/src/js/__tests__/components/ContentView/__snapshots__/ContentLoaderSpec.js.snap b/web/src/js/__tests__/components/ContentView/__snapshots__/ContentLoaderSpec.js.snap
new file mode 100644
index 00000000..88d4a380
--- /dev/null
+++ b/web/src/js/__tests__/components/ContentView/__snapshots__/ContentLoaderSpec.js.snap
@@ -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>
+`;