diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/client/react/store/reducers.test.js | 252 |
1 files changed, 125 insertions, 127 deletions
diff --git a/src/client/react/store/reducers.test.js b/src/client/react/store/reducers.test.js index 3f6aff1..091b1f4 100644 --- a/src/client/react/store/reducers.test.js +++ b/src/client/react/store/reducers.test.js @@ -34,163 +34,161 @@ const deepFreeze = require('deep-freeze'); const reducer = require('./reducers').default; const { DEFAULT_STATE } = require('./reducers')._test; -describe('reducers', () => { - beforeAll(() => { - deepFreeze(DEFAULT_STATE); - }); +beforeAll(() => { + deepFreeze(DEFAULT_STATE); +}); - describe('SEARCH/SET_USER', () => { - it('Resets the search state if the user is null', () => { - const prevState = { search: { foo: 'bar' } }; - const action = { type: 'SEARCH/SET_USER', user: null }; +describe('SEARCH/SET_USER', () => { + it('Resets the search state if the user is null', () => { + const prevState = { search: { foo: 'bar' } }; + const action = { type: 'SEARCH/SET_USER', user: null }; - deepFreeze([prevState, action]); + deepFreeze([prevState, action]); - expect(reducer(prevState, action)).toEqual({ - search: DEFAULT_STATE.search, - }); + expect(reducer(prevState, action)).toEqual({ + search: DEFAULT_STATE.search, }); + }); - it('Sets all the values of that user properly', () => { - expect(reducer(undefined, { type: 'SEARCH/SET_USER', user: 's/18561' })).toEqual({ - ...DEFAULT_STATE, - search: { - results: [], - text: '18561', - selected: 's/18561', - }, - }); + it('Sets all the values of that user properly', () => { + expect(reducer(undefined, { type: 'SEARCH/SET_USER', user: 's/18561' })).toEqual({ + ...DEFAULT_STATE, + search: { + results: [], + text: '18561', + selected: 's/18561', + }, }); }); +}); - describe('SEARCH/INPUT_CHANGE', () => { - describe('searchText is empty or whitespace-only', () => { - it('Returns no results', () => { - ['', ' ', '\t'].forEach((searchText) => { - const prevState = undefined; - const action = { type: 'SEARCH/INPUT_CHANGE', searchText }; - deepFreeze([prevState, action]); - const nextState = reducer(prevState, action); - - expect(nextState).toEqual({ - ...DEFAULT_STATE, - search: { - results: [], - text: searchText, - selected: null, - }, - }); +describe('SEARCH/INPUT_CHANGE', () => { + describe('searchText is empty or whitespace-only', () => { + it('Returns no results', () => { + ['', ' ', '\t'].forEach((searchText) => { + const prevState = undefined; + const action = { type: 'SEARCH/INPUT_CHANGE', searchText }; + deepFreeze([prevState, action]); + const nextState = reducer(prevState, action); + + expect(nextState).toEqual({ + ...DEFAULT_STATE, + search: { + results: [], + text: searchText, + selected: null, + }, }); }); }); + }); - describe('searchText is 18', () => { - let nextState; - beforeAll(() => { - const prevState = undefined; - const action = { type: 'SEARCH/INPUT_CHANGE', searchText: '18' }; - deepFreeze([prevState, action]); - nextState = reducer(prevState, action); - }); + describe('searchText is 18', () => { + let nextState; + beforeAll(() => { + const prevState = undefined; + const action = { type: 'SEARCH/INPUT_CHANGE', searchText: '18' }; + deepFreeze([prevState, action]); + nextState = reducer(prevState, action); + }); - it('Only returns 4 results', () => { - expect(nextState.search.results).toHaveLength(4); - }); + it('Only returns 4 results', () => { + expect(nextState.search.results).toHaveLength(4); + }); - it('Selects the first result', () => { - expect(nextState.search.selected).toEqual('s/18561'); - }); + it('Selects the first result', () => { + expect(nextState.search.selected).toEqual('s/18561'); + }); - it('Copies the searchText over to state.search.text', () => { - expect(nextState.search.text).toEqual('18'); - }); + it('Copies the searchText over to state.search.text', () => { + expect(nextState.search.text).toEqual('18'); }); }); +}); - describe('SEARCH/CHANGE_SELECTED_RESULT', () => { - describe('State has no results', () => { - it('Does nothing', () => { - const actionPlus = { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: +1 }; - const actionMin = { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: -1 }; +describe('SEARCH/CHANGE_SELECTED_RESULT', () => { + describe('State has no results', () => { + it('Does nothing', () => { + const actionPlus = { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: +1 }; + const actionMin = { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: -1 }; - deepFreeze([actionPlus, actionMin]); + deepFreeze([actionPlus, actionMin]); - const nextStatePlus = reducer(DEFAULT_STATE, actionPlus); - const nextStateMin = reducer(DEFAULT_STATE, actionMin); - expect(nextStatePlus).toEqual(DEFAULT_STATE); - expect(nextStateMin).toEqual(DEFAULT_STATE); - }); + const nextStatePlus = reducer(DEFAULT_STATE, actionPlus); + const nextStateMin = reducer(DEFAULT_STATE, actionMin); + expect(nextStatePlus).toEqual(DEFAULT_STATE); + expect(nextStateMin).toEqual(DEFAULT_STATE); }); + }); - describe('State has many results', () => { - it('Switches to the correct selectedResult', () => { - const prevState = { - ...DEFAULT_STATE, - search: { - results: ['s/18561', 's/18562', 's/18563'], - text: '1856', - selected: 's/18562', - }, - }; + describe('State has many results', () => { + it('Switches to the correct selectedResult', () => { + const prevState = { + ...DEFAULT_STATE, + search: { + results: ['s/18561', 's/18562', 's/18563'], + text: '1856', + selected: 's/18562', + }, + }; - const actionPlus = { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: +1 }; - const actionMin = { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: -1 }; + const actionPlus = { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: +1 }; + const actionMin = { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: -1 }; - deepFreeze([prevState, actionPlus, actionMin]); + deepFreeze([prevState, actionPlus, actionMin]); - const nextStatePlus = reducer(prevState, actionPlus); - const nextStateMin = reducer(prevState, actionMin); + const nextStatePlus = reducer(prevState, actionPlus); + const nextStateMin = reducer(prevState, actionMin); - expect(nextStatePlus).toEqual({ - ...prevState, - search: { - ...prevState.search, - selected: 's/18563', - }, - }); - expect(nextStateMin).toEqual({ - ...prevState, - search: { - ...prevState.search, - selected: 's/18561', - }, - }); + expect(nextStatePlus).toEqual({ + ...prevState, + search: { + ...prevState.search, + selected: 's/18563', + }, }); + expect(nextStateMin).toEqual({ + ...prevState, + search: { + ...prevState.search, + selected: 's/18561', + }, + }); + }); - it('Properly wraps around when incrementing', () => { - expect(reducer({ - ...DEFAULT_STATE, - search: { - results: ['s/18561', 's/18562', 's/18563'], - text: '1856', - selected: 's/18563', - }, - }, { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: +1 })).toEqual({ - ...DEFAULT_STATE, - search: { - results: ['s/18561', 's/18562', 's/18563'], - text: '1856', - selected: 's/18561', - }, - }); + it('Properly wraps around when incrementing', () => { + expect(reducer({ + ...DEFAULT_STATE, + search: { + results: ['s/18561', 's/18562', 's/18563'], + text: '1856', + selected: 's/18563', + }, + }, { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: +1 })).toEqual({ + ...DEFAULT_STATE, + search: { + results: ['s/18561', 's/18562', 's/18563'], + text: '1856', + selected: 's/18561', + }, }); + }); - it('Properly wraps around when decrementing', () => { - expect(reducer({ - ...DEFAULT_STATE, - search: { - results: ['s/18561', 's/18562', 's/18563'], - text: '1856', - selected: 's/18561', - }, - }, { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: -1 })).toEqual({ - ...DEFAULT_STATE, - search: { - results: ['s/18561', 's/18562', 's/18563'], - text: '1856', - selected: 's/18563', - }, - }); + it('Properly wraps around when decrementing', () => { + expect(reducer({ + ...DEFAULT_STATE, + search: { + results: ['s/18561', 's/18562', 's/18563'], + text: '1856', + selected: 's/18561', + }, + }, { type: 'SEARCH/CHANGE_SELECTED_RESULT', relativeChange: -1 })).toEqual({ + ...DEFAULT_STATE, + search: { + results: ['s/18561', 's/18562', 's/18563'], + text: '1856', + selected: 's/18563', + }, }); }); }); |