mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-22 07:08:10 +00:00
[web] Add tests for js/components/Header/FlowMenu.jsx
This commit is contained in:
parent
cdb256682e
commit
ddc03df4f6
102
web/src/js/__tests__/components/Header/FlowMenuSpec.js
Normal file
102
web/src/js/__tests__/components/Header/FlowMenuSpec.js
Normal file
@ -0,0 +1,102 @@
|
||||
jest.mock('../../../flow/utils')
|
||||
|
||||
import React from 'react'
|
||||
import renderer from 'react-test-renderer'
|
||||
import ConnectedFlowMenu, { FlowMenu } from '../../../components/Header/FlowMenu'
|
||||
import { TFlow, TStore }from '../../ducks/tutils'
|
||||
import { MessageUtils } from "../../../flow/utils"
|
||||
import { Provider } from 'react-redux'
|
||||
|
||||
|
||||
describe('FlowMenu Component', () => {
|
||||
let actions = {
|
||||
resumeFlow: jest.fn(),
|
||||
killFlow: jest.fn(),
|
||||
replayFlow: jest.fn(),
|
||||
duplicateFlow: jest.fn(),
|
||||
removeFlow: jest.fn(),
|
||||
revertFlow: jest.fn()
|
||||
},
|
||||
tflow = new TFlow()
|
||||
tflow.modified = true
|
||||
tflow.intercepted = true
|
||||
|
||||
it('should render correctly without flow', () => {
|
||||
let flowMenu = renderer.create(
|
||||
<FlowMenu removeFlow={actions.removeFlow}
|
||||
killFlow={actions.killFlow}
|
||||
replayFlow={actions.replayFlow}
|
||||
duplicateFlow={actions.duplicateFlow}
|
||||
resumeFlow={actions.resumeFlow}
|
||||
revertFlow={actions.revertFlow}/>),
|
||||
tree = flowMenu.toJSON()
|
||||
expect(tree).toMatchSnapshot()
|
||||
})
|
||||
|
||||
let flowMenu = renderer.create(<FlowMenu
|
||||
flow={tflow}
|
||||
removeFlow={actions.removeFlow}
|
||||
killFlow={actions.killFlow}
|
||||
replayFlow={actions.replayFlow}
|
||||
duplicateFlow={actions.duplicateFlow}
|
||||
resumeFlow={actions.resumeFlow}
|
||||
revertFlow={actions.revertFlow}/>),
|
||||
tree = flowMenu.toJSON()
|
||||
|
||||
it('should render correctly with flow', () => {
|
||||
expect(tree).toMatchSnapshot()
|
||||
})
|
||||
|
||||
let menu_content_1 = tree.children[0].children[0]
|
||||
it('should handle replayFlow', () => {
|
||||
let button = menu_content_1.children[0]
|
||||
button.props.onClick()
|
||||
expect(actions.replayFlow).toBeCalledWith(tflow)
|
||||
})
|
||||
|
||||
it('should handle duplicateFlow', () => {
|
||||
let button = menu_content_1.children[1]
|
||||
button.props.onClick()
|
||||
expect(actions.duplicateFlow).toBeCalledWith(tflow)
|
||||
})
|
||||
|
||||
it('should handle revertFlow', () => {
|
||||
let button = menu_content_1.children[2]
|
||||
button.props.onClick()
|
||||
expect(actions.revertFlow).toBeCalledWith(tflow)
|
||||
})
|
||||
|
||||
it('should handle removeFlow', () => {
|
||||
let button = menu_content_1.children[3]
|
||||
button.props.onClick()
|
||||
expect(actions.removeFlow).toBeCalledWith(tflow)
|
||||
})
|
||||
|
||||
let menu_content_2 = tree.children[1].children[0]
|
||||
it('should handle download', () => {
|
||||
let button = menu_content_2.children[0]
|
||||
button.props.onClick()
|
||||
expect(MessageUtils.getContentURL).toBeCalledWith(tflow, tflow.response)
|
||||
})
|
||||
|
||||
let menu_content_3 = tree.children[2].children[0]
|
||||
it('should handle resumeFlow', () => {
|
||||
let button = menu_content_3.children[0]
|
||||
button.props.onClick()
|
||||
expect(actions.resumeFlow).toBeCalledWith(tflow)
|
||||
})
|
||||
|
||||
it('should handle killFlow', () => {
|
||||
let button = menu_content_3.children[1]
|
||||
button.props.onClick()
|
||||
expect(actions.killFlow).toBeCalledWith(tflow)
|
||||
})
|
||||
|
||||
it('should connect to state', () => {
|
||||
let store = TStore(),
|
||||
provider = renderer.create(<Provider store={store}><ConnectedFlowMenu/></Provider>),
|
||||
tree = provider.toJSON()
|
||||
expect(tree).toMatchSnapshot()
|
||||
})
|
||||
|
||||
})
|
@ -0,0 +1,245 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`FlowMenu Component should connect to state 1`] = `
|
||||
<div>
|
||||
<div
|
||||
className="menu-group"
|
||||
>
|
||||
<div
|
||||
className="menu-content"
|
||||
>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={undefined}
|
||||
onClick={[Function]}
|
||||
title="[r]eplay flow"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-repeat text-primary"
|
||||
/>
|
||||
Replay
|
||||
</div>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={undefined}
|
||||
onClick={[Function]}
|
||||
title="[D]uplicate flow"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-copy text-info"
|
||||
/>
|
||||
Duplicate
|
||||
</div>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={true}
|
||||
onClick={false}
|
||||
title="revert changes to flow [V]"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-history text-warning"
|
||||
/>
|
||||
Revert
|
||||
</div>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={undefined}
|
||||
onClick={[Function]}
|
||||
title="[d]elete flow"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-trash text-danger"
|
||||
/>
|
||||
Delete
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="menu-legend"
|
||||
>
|
||||
Flow Modification
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="menu-group"
|
||||
>
|
||||
<div
|
||||
className="menu-content"
|
||||
>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={undefined}
|
||||
onClick={[Function]}
|
||||
title="download"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-download"
|
||||
/>
|
||||
Download
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="menu-legend"
|
||||
>
|
||||
Export
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="menu-group"
|
||||
>
|
||||
<div
|
||||
className="menu-content"
|
||||
>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={true}
|
||||
onClick={false}
|
||||
title="[a]ccept intercepted flow"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-play text-success"
|
||||
/>
|
||||
Resume
|
||||
</div>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={true}
|
||||
onClick={false}
|
||||
title="kill intercepted flow [x]"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-times text-danger"
|
||||
/>
|
||||
Abort
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="menu-legend"
|
||||
>
|
||||
Interception
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`FlowMenu Component should render correctly with flow 1`] = `
|
||||
<div>
|
||||
<div
|
||||
className="menu-group"
|
||||
>
|
||||
<div
|
||||
className="menu-content"
|
||||
>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={undefined}
|
||||
onClick={[Function]}
|
||||
title="[r]eplay flow"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-repeat text-primary"
|
||||
/>
|
||||
Replay
|
||||
</div>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={undefined}
|
||||
onClick={[Function]}
|
||||
title="[D]uplicate flow"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-copy text-info"
|
||||
/>
|
||||
Duplicate
|
||||
</div>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={false}
|
||||
onClick={[Function]}
|
||||
title="revert changes to flow [V]"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-history text-warning"
|
||||
/>
|
||||
Revert
|
||||
</div>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={undefined}
|
||||
onClick={[Function]}
|
||||
title="[d]elete flow"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-trash text-danger"
|
||||
/>
|
||||
Delete
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="menu-legend"
|
||||
>
|
||||
Flow Modification
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="menu-group"
|
||||
>
|
||||
<div
|
||||
className="menu-content"
|
||||
>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={undefined}
|
||||
onClick={[Function]}
|
||||
title="download"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-download"
|
||||
/>
|
||||
Download
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="menu-legend"
|
||||
>
|
||||
Export
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="menu-group"
|
||||
>
|
||||
<div
|
||||
className="menu-content"
|
||||
>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={false}
|
||||
onClick={[Function]}
|
||||
title="[a]ccept intercepted flow"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-play text-success"
|
||||
/>
|
||||
Resume
|
||||
</div>
|
||||
<div
|
||||
className="btn btn-default"
|
||||
disabled={false}
|
||||
onClick={[Function]}
|
||||
title="kill intercepted flow [x]"
|
||||
>
|
||||
<i
|
||||
className="fa fa-fw fa-times text-danger"
|
||||
/>
|
||||
Abort
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="menu-legend"
|
||||
>
|
||||
Interception
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`FlowMenu Component should render correctly without flow 1`] = `<div />`;
|
Loading…
Reference in New Issue
Block a user