aboutsummaryrefslogtreecommitdiffstats
path: root/web/src/js/__tests__/urlStateSpec.js
blob: 0b173d46d4ea7e5534233d4da5d9729bb00c879d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import initialize from '../urlState'

import reduceFlows from '../ducks/flows'
import reduceUI from '../ducks/ui/index'
import reduceEventLog from '../ducks/eventLog'
import * as flowsActions from '../ducks/flows'

import configureStore from 'redux-mock-store'

const mockStore = configureStore()

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)
        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)
        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" }]) })

    it('should handle unimplemented query argument', () => {
        window.location.hash = "#/flows?foo=bar"
        console.error = jest.fn()
        let store = mockStore(initialState)
        initialize(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)
        expect(store.getActions()).toEqual([
            {
                flowIds: ["123"],
                type: "FLOWS_SELECT"
            },
            {
                tab: "request",
                type: "UI_FLOWVIEW_SET_TAB"
            }
        ])
    })
})

describe('updateUrlFromStore', () => {
    history.replaceState = jest.fn()
    let flows = reduceFlows(undefined, flowsActions.select(123)),
    initialState = {
        flows:    reduceFlows(flows, flowsActions.setFilter('~u foo')),
        ui:       reduceUI(undefined, {}),
        eventLog: reduceEventLog(undefined, {})
    }

    it('should update url', () => {
        let store = mockStore(initialState)
        initialize(store)
        expect(history.replaceState).toBeCalledWith(undefined, '', '/#/flows/123/request?s=~u foo')
    })
})