71 lines
2.5 KiB
JavaScript
71 lines
2.5 KiB
JavaScript
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 axios from '~/lib/utils/axios_utils';
|
|
import { MOCK_SEARCH, MOCK_AUTOCOMPLETE_OPTIONS_RES } 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_RES }} | ${'success'} | ${[{ type: types.REQUEST_AUTOCOMPLETE }, { type: types.RECEIVE_AUTOCOMPLETE_SUCCESS, payload: MOCK_AUTOCOMPLETE_OPTIONS_RES }]} | ${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('clearAutocomplete', () => {
|
|
it('calls the CLEAR_AUTOCOMPLETE mutation', () => {
|
|
return testAction({
|
|
action: actions.clearAutocomplete,
|
|
state,
|
|
expectedMutations: [{ type: types.CLEAR_AUTOCOMPLETE }],
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('setSearch', () => {
|
|
it('calls the SET_SEARCH mutation', () => {
|
|
return testAction({
|
|
action: actions.setSearch,
|
|
payload: MOCK_SEARCH,
|
|
state,
|
|
expectedMutations: [{ type: types.SET_SEARCH, payload: MOCK_SEARCH }],
|
|
});
|
|
});
|
|
});
|
|
});
|