diff options
Diffstat (limited to 'spec/frontend/header_search/store/actions_spec.js')
-rw-r--r-- | spec/frontend/header_search/store/actions_spec.js | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/spec/frontend/header_search/store/actions_spec.js b/spec/frontend/header_search/store/actions_spec.js index 4530df0d91c..ee2c72df77b 100644 --- a/spec/frontend/header_search/store/actions_spec.js +++ b/spec/frontend/header_search/store/actions_spec.js @@ -1,18 +1,50 @@ +import MockAdapter from 'axios-mock-adapter'; import testAction from 'helpers/vuex_action_helper'; +import createFlash from '~/flash'; import * as actions from '~/header_search/store/actions'; import * as types from '~/header_search/store/mutation_types'; import createState from '~/header_search/store/state'; -import { MOCK_SEARCH } from '../mock_data'; +import axios from '~/lib/utils/axios_utils'; +import { MOCK_SEARCH, MOCK_AUTOCOMPLETE_OPTIONS } from '../mock_data'; + +jest.mock('~/flash'); describe('Header Search Store Actions', () => { let state; + let mock; + + const flashCallback = (callCount) => { + expect(createFlash).toHaveBeenCalledTimes(callCount); + createFlash.mockClear(); + }; beforeEach(() => { state = createState({}); + mock = new MockAdapter(axios); }); afterEach(() => { state = null; + mock.restore(); + }); + + describe.each` + axiosMock | type | expectedMutations | flashCallCount + ${{ method: 'onGet', code: 200, res: MOCK_AUTOCOMPLETE_OPTIONS }} | ${'success'} | ${[{ type: types.REQUEST_AUTOCOMPLETE }, { type: types.RECEIVE_AUTOCOMPLETE_SUCCESS, payload: MOCK_AUTOCOMPLETE_OPTIONS }]} | ${0} + ${{ method: 'onGet', code: 500, res: null }} | ${'error'} | ${[{ type: types.REQUEST_AUTOCOMPLETE }, { type: types.RECEIVE_AUTOCOMPLETE_ERROR }]} | ${1} + `('fetchAutocompleteOptions', ({ axiosMock, type, expectedMutations, flashCallCount }) => { + describe(`on ${type}`, () => { + beforeEach(() => { + mock[axiosMock.method]().replyOnce(axiosMock.code, axiosMock.res); + }); + it(`should dispatch the correct mutations`, () => { + return testAction({ + action: actions.fetchAutocompleteOptions, + state, + expectedMutations, + }).then(() => flashCallback(flashCallCount)); + }); + }); }); describe('setSearch', () => { |