aboutsummaryrefslogtreecommitdiffstats
path: root/web/src/js/__tests__
diff options
context:
space:
mode:
authorMatthew Shao <me@matshao.com>2017-07-01 08:46:04 -0500
committerGitHub <noreply@github.com>2017-07-01 08:46:04 -0500
commitf3231ed758324a7de465ee5a377f9c40b0a8df34 (patch)
tree3979c67de95b398e8d0c89034feee60a0d0a3bb6 /web/src/js/__tests__
parent321352ef0bc1911d49c8b6f8537674b03fa92f70 (diff)
parentaad0b95cbe65e97574d49f3933002d347470d1ef (diff)
downloadmitmproxy-f3231ed758324a7de465ee5a377f9c40b0a8df34.tar.gz
mitmproxy-f3231ed758324a7de465ee5a377f9c40b0a8df34.tar.bz2
mitmproxy-f3231ed758324a7de465ee5a377f9c40b0a8df34.zip
Merge pull request #2416 from MatthewShao/mitmweb-options
[WIP] [web] Mitmweb options editor UI
Diffstat (limited to 'web/src/js/__tests__')
-rw-r--r--web/src/js/__tests__/components/Header/FileMenuSpec.js15
-rw-r--r--web/src/js/__tests__/components/Header/__snapshots__/FileMenuSpec.js.snap13
-rw-r--r--web/src/js/__tests__/components/Modal/ModalSpec.js30
-rw-r--r--web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap66
-rw-r--r--web/src/js/__tests__/ducks/optionsSpec.js25
-rw-r--r--web/src/js/__tests__/ducks/tutils.js6
-rw-r--r--web/src/js/__tests__/ducks/ui/modalSpec.js25
7 files changed, 178 insertions, 2 deletions
diff --git a/web/src/js/__tests__/components/Header/FileMenuSpec.js b/web/src/js/__tests__/components/Header/FileMenuSpec.js
index 65b4647a..0d87530b 100644
--- a/web/src/js/__tests__/components/Header/FileMenuSpec.js
+++ b/web/src/js/__tests__/components/Header/FileMenuSpec.js
@@ -8,13 +8,20 @@ describe('FileMenu Component', () => {
let clearFn = jest.fn(),
loadFn = jest.fn(),
saveFn = jest.fn(),
+ openModalFn = jest.fn(),
mockEvent = {
preventDefault: jest.fn(),
target: { files: ["foo", "bar "] }
},
createNodeMock = () => { return { click: jest.fn() }},
fileMenu = renderer.create(
- <FileMenu clearFlows={clearFn} loadFlows={loadFn} saveFlows={saveFn}/>, { createNodeMock }),
+ <FileMenu
+ clearFlows={clearFn}
+ loadFlows={loadFn}
+ saveFlows={saveFn}
+ openModal={openModalFn}
+ />,
+ { createNodeMock }),
tree = fileMenu.toJSON()
it('should render correctly', () => {
@@ -42,4 +49,10 @@ describe('FileMenu Component', () => {
a.props.onClick(mockEvent)
expect(saveFn).toBeCalled()
})
+
+ it('should open optionModal', () => {
+ let a = ul.children[3].children[1]
+ a.props.onClick(mockEvent)
+ expect(openModalFn).toBeCalled()
+ })
})
diff --git a/web/src/js/__tests__/components/Header/__snapshots__/FileMenuSpec.js.snap b/web/src/js/__tests__/components/Header/__snapshots__/FileMenuSpec.js.snap
index 13ecf3f5..15c1afbc 100644
--- a/web/src/js/__tests__/components/Header/__snapshots__/FileMenuSpec.js.snap
+++ b/web/src/js/__tests__/components/Header/__snapshots__/FileMenuSpec.js.snap
@@ -63,6 +63,19 @@ exports[`FileMenu Component should render correctly 1`] = `
</li>
<li>
+ <a
+ href="#"
+ onClick={[Function]}
+ >
+ <i
+ className="fa fa-fw fa-cog"
+ />
+  Options
+ </a>
+
+ </li>
+ <li>
+
<hr
className="divider"
/>
diff --git a/web/src/js/__tests__/components/Modal/ModalSpec.js b/web/src/js/__tests__/components/Modal/ModalSpec.js
new file mode 100644
index 00000000..e4880d08
--- /dev/null
+++ b/web/src/js/__tests__/components/Modal/ModalSpec.js
@@ -0,0 +1,30 @@
+import React from 'react'
+import renderer from 'react-test-renderer'
+import Modal from '../../../components/Modal/Modal'
+import { Provider } from 'react-redux'
+import { TStore } from '../../ducks/tutils'
+
+describe('Modal Component', () => {
+ let store = TStore()
+
+ it('should render correctly', () => {
+ // hide modal by default
+ let provider = renderer.create(
+ <Provider store={store}>
+ <Modal/>
+ </Provider>
+ ),
+ tree = provider.toJSON()
+ expect(tree).toMatchSnapshot()
+
+ // option modal show up
+ store.getState().ui.modal.activeModal = 'OptionModal'
+ provider = renderer.create(
+ <Provider store={store}>
+ <Modal/>
+ </Provider>
+ )
+ tree = provider.toJSON()
+ expect(tree).toMatchSnapshot()
+ })
+})
diff --git a/web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap b/web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap
new file mode 100644
index 00000000..4fe163d1
--- /dev/null
+++ b/web/src/js/__tests__/components/Modal/__snapshots__/ModalSpec.js.snap
@@ -0,0 +1,66 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Modal Component should render correctly 1`] = `<div />`;
+
+exports[`Modal Component should render correctly 2`] = `
+<div>
+ <div
+ className="modal-backdrop fade in"
+ />
+ <div
+ aria-labelledby="options"
+ className="modal modal-visible"
+ id="optionsModal"
+ role="dialog"
+ tabIndex="-1"
+ >
+ <div
+ className="modal-dialog modal-lg"
+ role="document"
+ >
+ <div
+ className="modal-content"
+ >
+ <div>
+ <div
+ className="modal-header"
+ >
+ <button
+ className="close"
+ data-dismiss="modal"
+ onClick={[Function]}
+ type="button"
+ >
+ <i
+ className="fa fa-fw fa-times"
+ />
+ </button>
+ <div
+ className="modal-title"
+ >
+ <h4>
+ Options
+ </h4>
+ </div>
+ </div>
+ <div
+ className="modal-body"
+ >
+ ...
+ </div>
+ <div
+ className="modal-footer"
+ >
+ <button
+ className="btn btn-primary"
+ type="button"
+ >
+ Save Changes
+ </button>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+`;
diff --git a/web/src/js/__tests__/ducks/optionsSpec.js b/web/src/js/__tests__/ducks/optionsSpec.js
new file mode 100644
index 00000000..62019715
--- /dev/null
+++ b/web/src/js/__tests__/ducks/optionsSpec.js
@@ -0,0 +1,25 @@
+jest.mock('../../utils')
+
+import reduceOptions, * as OptionsActions from '../../ducks/options'
+
+describe('option reducer', () => {
+ it('should return initial state', () => {
+ expect(reduceOptions(undefined, {})).toEqual({})
+ })
+
+ it('should handle receive action', () => {
+ let action = { type: OptionsActions.RECEIVE, data: 'foo' }
+ expect(reduceOptions(undefined, action)).toEqual('foo')
+ })
+
+ it('should handle update action', () => {
+ let action = {type: OptionsActions.UPDATE, data: {id: 1} }
+ expect(reduceOptions(undefined, action)).toEqual({id: 1})
+ })
+})
+
+describe('option actions', () => {
+ it('should be possible to update option', () => {
+ expect(reduceOptions(undefined, OptionsActions.update())).toEqual({})
+ })
+})
diff --git a/web/src/js/__tests__/ducks/tutils.js b/web/src/js/__tests__/ducks/tutils.js
index 2a79ede0..9b92e676 100644
--- a/web/src/js/__tests__/ducks/tutils.js
+++ b/web/src/js/__tests__/ducks/tutils.js
@@ -32,6 +32,9 @@ export function TStore(){
},
header: {
tab: 'Start'
+ },
+ modal: {
+ activeModal: undefined
}
},
settings: {
@@ -47,7 +50,8 @@ export function TStore(){
sort: {
desc: true,
column: 'PathColumn'
- }
+ },
+ view: [ tflow ]
},
connection: {
state: ConnectionState.ESTABLISHED
diff --git a/web/src/js/__tests__/ducks/ui/modalSpec.js b/web/src/js/__tests__/ducks/ui/modalSpec.js
new file mode 100644
index 00000000..30c39760
--- /dev/null
+++ b/web/src/js/__tests__/ducks/ui/modalSpec.js
@@ -0,0 +1,25 @@
+import reduceModal, * as ModalActions from '../../../ducks/ui/modal'
+
+describe('modal reducer', () => {
+ let state = undefined
+
+ it('should return the initial state', () => {
+ expect(reduceModal(undefined, {})).toEqual(
+ { activeModal: undefined }
+ )
+ })
+
+ it('should handle setActiveModal action', () => {
+ state = reduceModal(undefined, ModalActions.setActiveModal('foo'))
+ expect(state).toEqual(
+ { activeModal: 'foo' }
+ )
+ })
+
+ it('should handle hideModal action', () => {
+ state = reduceModal(state, ModalActions.hideModal())
+ expect(state).toEqual(
+ { activeModal: undefined }
+ )
+ })
+})