diff options
Diffstat (limited to 'spec/frontend/search/store')
-rw-r--r-- | spec/frontend/search/store/actions_spec.js | 31 | ||||
-rw-r--r-- | spec/frontend/search/store/mutations_spec.js | 10 | ||||
-rw-r--r-- | spec/frontend/search/store/utils_spec.js | 29 |
3 files changed, 59 insertions, 11 deletions
diff --git a/spec/frontend/search/store/actions_spec.js b/spec/frontend/search/store/actions_spec.js index b50248bb295..5f8cee8160f 100644 --- a/spec/frontend/search/store/actions_spec.js +++ b/spec/frontend/search/store/actions_spec.js @@ -5,7 +5,11 @@ import createFlash from '~/flash'; import axios from '~/lib/utils/axios_utils'; import * as urlUtils from '~/lib/utils/url_utility'; import * as actions from '~/search/store/actions'; -import { GROUPS_LOCAL_STORAGE_KEY, PROJECTS_LOCAL_STORAGE_KEY } from '~/search/store/constants'; +import { + GROUPS_LOCAL_STORAGE_KEY, + PROJECTS_LOCAL_STORAGE_KEY, + SIDEBAR_PARAMS, +} from '~/search/store/constants'; import * as types from '~/search/store/mutation_types'; import createState from '~/search/store/state'; import * as storeUtils from '~/search/store/utils'; @@ -153,15 +157,24 @@ describe('Global Search Store Actions', () => { }); }); - describe('setQuery', () => { - const payload = { key: 'key1', value: 'value1' }; + describe.each` + payload | isDirty | isDirtyMutation + ${{ key: SIDEBAR_PARAMS[0], value: 'test' }} | ${false} | ${[{ type: types.SET_SIDEBAR_DIRTY, payload: false }]} + ${{ key: SIDEBAR_PARAMS[0], value: 'test' }} | ${true} | ${[{ type: types.SET_SIDEBAR_DIRTY, payload: true }]} + ${{ key: SIDEBAR_PARAMS[1], value: 'test' }} | ${false} | ${[{ type: types.SET_SIDEBAR_DIRTY, payload: false }]} + ${{ key: SIDEBAR_PARAMS[1], value: 'test' }} | ${true} | ${[{ type: types.SET_SIDEBAR_DIRTY, payload: true }]} + ${{ key: 'non-sidebar', value: 'test' }} | ${false} | ${[]} + ${{ key: 'non-sidebar', value: 'test' }} | ${true} | ${[]} + `('setQuery', ({ payload, isDirty, isDirtyMutation }) => { + describe(`when filter param is ${payload.key} and utils.isSidebarDirty returns ${isDirty}`, () => { + const expectedMutations = [{ type: types.SET_QUERY, payload }].concat(isDirtyMutation); - it('calls the SET_QUERY mutation', () => { - return testAction({ - action: actions.setQuery, - payload, - state, - expectedMutations: [{ type: types.SET_QUERY, payload }], + beforeEach(() => { + storeUtils.isSidebarDirty = jest.fn().mockReturnValue(isDirty); + }); + + it(`should dispatch the correct mutations`, () => { + return testAction({ action: actions.setQuery, payload, state, expectedMutations }); }); }); }); diff --git a/spec/frontend/search/store/mutations_spec.js b/spec/frontend/search/store/mutations_spec.js index a60718a972d..25f9b692955 100644 --- a/spec/frontend/search/store/mutations_spec.js +++ b/spec/frontend/search/store/mutations_spec.js @@ -72,6 +72,16 @@ describe('Global Search Store Mutations', () => { }); }); + describe('SET_SIDEBAR_DIRTY', () => { + const value = true; + + it('sets sidebarDirty to the value', () => { + mutations[types.SET_SIDEBAR_DIRTY](state, value); + + expect(state.sidebarDirty).toBe(value); + }); + }); + describe('LOAD_FREQUENT_ITEMS', () => { it('sets frequentItems[key] to data', () => { const payload = { key: 'test-key', data: [1, 2, 3] }; diff --git a/spec/frontend/search/store/utils_spec.js b/spec/frontend/search/store/utils_spec.js index bcdad9f89dd..20d764190b1 100644 --- a/spec/frontend/search/store/utils_spec.js +++ b/spec/frontend/search/store/utils_spec.js @@ -1,6 +1,11 @@ import { useLocalStorageSpy } from 'helpers/local_storage_helper'; -import { MAX_FREQUENCY } from '~/search/store/constants'; -import { loadDataFromLS, setFrequentItemToLS, mergeById } from '~/search/store/utils'; +import { MAX_FREQUENCY, SIDEBAR_PARAMS } from '~/search/store/constants'; +import { + loadDataFromLS, + setFrequentItemToLS, + mergeById, + isSidebarDirty, +} from '~/search/store/utils'; import { MOCK_LS_KEY, MOCK_GROUPS, @@ -216,4 +221,24 @@ describe('Global Search Store Utils', () => { }); }); }); + + describe.each` + description | currentQuery | urlQuery | isDirty + ${'identical'} | ${{ [SIDEBAR_PARAMS[0]]: 'default', [SIDEBAR_PARAMS[1]]: 'default' }} | ${{ [SIDEBAR_PARAMS[0]]: 'default', [SIDEBAR_PARAMS[1]]: 'default' }} | ${false} + ${'different'} | ${{ [SIDEBAR_PARAMS[0]]: 'default', [SIDEBAR_PARAMS[1]]: 'new' }} | ${{ [SIDEBAR_PARAMS[0]]: 'default', [SIDEBAR_PARAMS[1]]: 'default' }} | ${true} + ${'null/undefined'} | ${{ [SIDEBAR_PARAMS[0]]: null, [SIDEBAR_PARAMS[1]]: null }} | ${{ [SIDEBAR_PARAMS[0]]: undefined, [SIDEBAR_PARAMS[1]]: undefined }} | ${false} + ${'updated/undefined'} | ${{ [SIDEBAR_PARAMS[0]]: 'new', [SIDEBAR_PARAMS[1]]: 'new' }} | ${{ [SIDEBAR_PARAMS[0]]: undefined, [SIDEBAR_PARAMS[1]]: undefined }} | ${true} + `('isSidebarDirty', ({ description, currentQuery, urlQuery, isDirty }) => { + describe(`with ${description} sidebar query data`, () => { + let res; + + beforeEach(() => { + res = isSidebarDirty(currentQuery, urlQuery); + }); + + it(`returns ${isDirty}`, () => { + expect(res).toStrictEqual(isDirty); + }); + }); + }); }); |