mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2025-01-30 23:09:44 +00:00
[web] Export updateUrlFromStore and updateStoreFromUrl
This commit is contained in:
parent
a7feced5de
commit
365677006c
@ -1,4 +1,5 @@
|
||||
import initialize from '../urlState'
|
||||
import { updateStoreFromUrl, updateUrlFromStore } from '../urlState'
|
||||
|
||||
import reduceFlows from '../ducks/flows'
|
||||
import reduceUI from '../ducks/ui/index'
|
||||
@ -8,47 +9,44 @@ import * as flowsActions from '../ducks/flows'
|
||||
import configureStore from 'redux-mock-store'
|
||||
|
||||
const mockStore = configureStore()
|
||||
history.replaceState = jest.fn()
|
||||
|
||||
describe('updateStoreFromUrl', () => {
|
||||
history.replaceState = jest.fn()
|
||||
let initialState = {
|
||||
flows: reduceFlows(undefined, {}),
|
||||
ui: reduceUI(undefined, {}),
|
||||
eventLog: reduceEventLog(undefined, {})
|
||||
}
|
||||
|
||||
it('should handle search query', () => {
|
||||
window.location.hash = "#/flows?s=foo"
|
||||
let store = mockStore(initialState)
|
||||
initialize(store)
|
||||
let store = mockStore()
|
||||
updateStoreFromUrl(store)
|
||||
expect(store.getActions()).toEqual([{ filter: "foo", type: "FLOWS_SET_FILTER" }])
|
||||
})
|
||||
|
||||
it('should handle highlight query', () => {
|
||||
window.location.hash = "#/flows?h=foo"
|
||||
let store = mockStore(initialState)
|
||||
initialize(store)
|
||||
let store = mockStore()
|
||||
updateStoreFromUrl(store)
|
||||
expect(store.getActions()).toEqual([{ highlight: "foo", type: "FLOWS_SET_HIGHLIGHT" }])
|
||||
})
|
||||
|
||||
it('should handle show event log', () => {
|
||||
window.location.hash = "#/flows?e=true"
|
||||
let store = mockStore(initialState)
|
||||
initialize(store)
|
||||
expect(store.getActions()).toEqual([{ type: "EVENTS_TOGGLE_VISIBILITY" }]) })
|
||||
let initialState = { eventLog: reduceEventLog(undefined, {}) },
|
||||
store = mockStore(initialState)
|
||||
updateStoreFromUrl(store)
|
||||
expect(store.getActions()).toEqual([{ type: "EVENTS_TOGGLE_VISIBILITY" }])
|
||||
})
|
||||
|
||||
it('should handle unimplemented query argument', () => {
|
||||
window.location.hash = "#/flows?foo=bar"
|
||||
console.error = jest.fn()
|
||||
let store = mockStore(initialState)
|
||||
initialize(store)
|
||||
let store = mockStore()
|
||||
updateStoreFromUrl(store)
|
||||
expect(console.error).toBeCalledWith("unimplemented query arg: foo=bar")
|
||||
})
|
||||
|
||||
it('should select flow and tab', () => {
|
||||
window.location.hash = "#/flows/123/request"
|
||||
let store = mockStore(initialState)
|
||||
initialize(store)
|
||||
let store = mockStore()
|
||||
updateStoreFromUrl(store)
|
||||
expect(store.getActions()).toEqual([
|
||||
{
|
||||
flowIds: ["123"],
|
||||
@ -63,17 +61,40 @@ describe('updateStoreFromUrl', () => {
|
||||
})
|
||||
|
||||
describe('updateUrlFromStore', () => {
|
||||
history.replaceState = jest.fn()
|
||||
let flows = reduceFlows(undefined, flowsActions.select(123)),
|
||||
initialState = {
|
||||
flows: reduceFlows(flows, flowsActions.setFilter('~u foo')),
|
||||
let initialState = {
|
||||
flows: reduceFlows(undefined, {}),
|
||||
ui: reduceUI(undefined, {}),
|
||||
eventLog: reduceEventLog(undefined, {})
|
||||
}
|
||||
|
||||
it('should update url', () => {
|
||||
it('should update initial url', () => {
|
||||
let store = mockStore(initialState)
|
||||
initialize(store)
|
||||
updateUrlFromStore(store)
|
||||
expect(history.replaceState).toBeCalledWith(undefined, '', '/#/flows')
|
||||
})
|
||||
|
||||
it('should update url', () => {
|
||||
let flows = reduceFlows(undefined, flowsActions.select(123)),
|
||||
state = {
|
||||
...initialState,
|
||||
flows: reduceFlows(flows, flowsActions.setFilter('~u foo'))
|
||||
},
|
||||
store = mockStore(state)
|
||||
updateUrlFromStore(store)
|
||||
expect(history.replaceState).toBeCalledWith(undefined, '', '/#/flows/123/request?s=~u foo')
|
||||
})
|
||||
})
|
||||
|
||||
describe('initialize', () => {
|
||||
let initialState = {
|
||||
flows: reduceFlows(undefined, {}),
|
||||
ui: reduceUI(undefined, {}),
|
||||
eventLog: reduceEventLog(undefined, {})
|
||||
}
|
||||
|
||||
it('should handle initial state', () => {
|
||||
let store = mockStore(initialState)
|
||||
initialize(store)
|
||||
store.dispatch({ type: "foo" })
|
||||
})
|
||||
})
|
||||
|
@ -15,7 +15,7 @@ const Query = {
|
||||
SHOW_EVENTLOG: "e"
|
||||
};
|
||||
|
||||
function updateStoreFromUrl(store) {
|
||||
export function updateStoreFromUrl(store) {
|
||||
const [path, query] = window.location.hash.substr(1).split("?", 2)
|
||||
const path_components = path.substr(1).split("/")
|
||||
|
||||
@ -50,7 +50,7 @@ function updateStoreFromUrl(store) {
|
||||
}
|
||||
}
|
||||
|
||||
function updateUrlFromStore(store) {
|
||||
export function updateUrlFromStore(store) {
|
||||
const state = store.getState()
|
||||
let query = {
|
||||
[Query.SEARCH]: state.flows.filter,
|
||||
@ -78,6 +78,6 @@ function updateUrlFromStore(store) {
|
||||
}
|
||||
|
||||
export default function initialize(store) {
|
||||
store.subscribe(() => updateUrlFromStore(store))
|
||||
updateStoreFromUrl(store)
|
||||
store.subscribe(() => updateUrlFromStore(store))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user