aboutsummaryrefslogtreecommitdiffstats
path: root/web/src
diff options
context:
space:
mode:
authorMatthew Shao <me@matshao.com>2017-06-06 19:07:35 +0800
committerMatthew Shao <me@matshao.com>2017-06-06 19:07:35 +0800
commit4d3d18784e84ee0486a1b8cb35108170a3d2723e (patch)
tree7c5d423f47b89ca54f00273f14fcc79c697711d0 /web/src
parent3d51595b27c6e24a377166a2dc793c0f271ed612 (diff)
downloadmitmproxy-4d3d18784e84ee0486a1b8cb35108170a3d2723e.tar.gz
mitmproxy-4d3d18784e84ee0486a1b8cb35108170a3d2723e.tar.bz2
mitmproxy-4d3d18784e84ee0486a1b8cb35108170a3d2723e.zip
[web] Add tests for js/components/ContentView/ViewSelector.jsx
Diffstat (limited to 'web/src')
-rw-r--r--web/src/js/__tests__/components/ContentView/ViewSelectorSpec.js38
-rw-r--r--web/src/js/__tests__/components/ContentView/__snapshots__/ViewSelectorSpec.js.snap123
-rw-r--r--web/src/js/components/ContentView/ViewSelector.jsx2
3 files changed, 162 insertions, 1 deletions
diff --git a/web/src/js/__tests__/components/ContentView/ViewSelectorSpec.js b/web/src/js/__tests__/components/ContentView/ViewSelectorSpec.js
new file mode 100644
index 00000000..9e87e2f0
--- /dev/null
+++ b/web/src/js/__tests__/components/ContentView/ViewSelectorSpec.js
@@ -0,0 +1,38 @@
+import React from 'react'
+import renderer from 'react-test-renderer'
+import ConnectedComponent, { ViewSelector } from '../../../components/ContentView/ViewSelector'
+import { Provider } from 'react-redux'
+import { TStore } from '../../ducks/tutils'
+
+
+describe('ViewSelector Component', () => {
+ let contentViews = ['Auto', 'Raw', 'Text'],
+ activeView = 'Auto',
+ setContentViewFn = jest.fn(),
+ viewSelector = renderer.create(
+ <ViewSelector contentViews={contentViews} activeView={activeView} setContentView={setContentViewFn}/>
+ ),
+ tree = viewSelector.toJSON()
+
+ it('should render correctly', () => {
+ expect(tree).toMatchSnapshot()
+ })
+
+ it('should handle click', () => {
+ let mockEvent = { preventDefault: jest.fn() },
+ tab = tree.children[1].children[0].children[1]
+ tab.props.onClick(mockEvent)
+ expect(mockEvent.preventDefault).toBeCalled()
+ })
+
+ it('should connect to state', () => {
+ let store = TStore(),
+ provider = renderer.create(
+ <Provider store={store}>
+ <ConnectedComponent/>
+ </Provider>
+ ),
+ tree = provider.toJSON()
+ expect(tree).toMatchSnapshot()
+ })
+})
diff --git a/web/src/js/__tests__/components/ContentView/__snapshots__/ViewSelectorSpec.js.snap b/web/src/js/__tests__/components/ContentView/__snapshots__/ViewSelectorSpec.js.snap
new file mode 100644
index 00000000..481bd56a
--- /dev/null
+++ b/web/src/js/__tests__/components/ContentView/__snapshots__/ViewSelectorSpec.js.snap
@@ -0,0 +1,123 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`ViewSelector Component should connect to state 1`] = `
+<div
+ className="dropup pull-left"
+>
+ <a
+ className="btn btn-default btn-xs"
+ href="#"
+ onClick={[Function]}
+ >
+ <span>
+
+ <b>
+ View:
+ </b>
+
+ auto
+
+ <span
+ className="caret"
+ />
+
+ </span>
+ </a>
+ <ul
+ className="dropdown-menu"
+ role="menu"
+ >
+ <li>
+
+ <a
+ href="#"
+ onClick={[Function]}
+ >
+ auto
+ </a>
+
+ </li>
+ <li>
+
+ <a
+ href="#"
+ onClick={[Function]}
+ >
+ raw
+ </a>
+
+ </li>
+ <li>
+
+ <a
+ href="#"
+ onClick={[Function]}
+ >
+ text
+ </a>
+
+ </li>
+ </ul>
+</div>
+`;
+
+exports[`ViewSelector Component should render correctly 1`] = `
+<div
+ className="dropup pull-left"
+>
+ <a
+ className="btn btn-default btn-xs"
+ href="#"
+ onClick={[Function]}
+ >
+ <span>
+
+ <b>
+ View:
+ </b>
+
+ auto
+
+ <span
+ className="caret"
+ />
+
+ </span>
+ </a>
+ <ul
+ className="dropdown-menu"
+ role="menu"
+ >
+ <li>
+
+ <a
+ href="#"
+ onClick={[Function]}
+ >
+ auto
+ </a>
+
+ </li>
+ <li>
+
+ <a
+ href="#"
+ onClick={[Function]}
+ >
+ raw
+ </a>
+
+ </li>
+ <li>
+
+ <a
+ href="#"
+ onClick={[Function]}
+ >
+ text
+ </a>
+
+ </li>
+ </ul>
+</div>
+`;
diff --git a/web/src/js/components/ContentView/ViewSelector.jsx b/web/src/js/components/ContentView/ViewSelector.jsx
index 4c99d5ed..812d87e5 100644
--- a/web/src/js/components/ContentView/ViewSelector.jsx
+++ b/web/src/js/components/ContentView/ViewSelector.jsx
@@ -11,7 +11,7 @@ ViewSelector.propTypes = {
setContentView: PropTypes.func.isRequired
}
-function ViewSelector ({contentViews, activeView, setContentView}){
+export function ViewSelector ({contentViews, activeView, setContentView}){
let inner = <span> <b>View:</b> {activeView.toLowerCase()} <span className="caret"></span> </span>
return (