From 3bffbb159eebf80dabfa2476a040a620e051be0b Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Wed, 30 May 2018 11:10:32 +0100 Subject: ability to search merge requests reset merge requests before fetch --- .../ide/stores/modules/merge_requests/actions.js | 9 +++---- .../ide/stores/modules/merge_requests/constants.js | 7 ++++- .../ide/stores/modules/merge_requests/state.js | 3 ++- .../stores/modules/merge_requests/actions_spec.js | 30 +++++++++++++++++++--- 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/ide/stores/modules/merge_requests/actions.js b/app/assets/javascripts/ide/stores/modules/merge_requests/actions.js index 35b1492f1cf..d3050183bd3 100644 --- a/app/assets/javascripts/ide/stores/modules/merge_requests/actions.js +++ b/app/assets/javascripts/ide/stores/modules/merge_requests/actions.js @@ -11,13 +11,12 @@ export const receiveMergeRequestsError = ({ commit }) => { export const receiveMergeRequestsSuccess = ({ commit }, data) => commit(types.RECEIVE_MERGE_REQUESTS_SUCCESS, data); -export const fetchMergeRequests = ({ dispatch, state }) => { +export const fetchMergeRequests = ({ dispatch, state: { scope, state } }, search = '') => { dispatch('requestMergeRequests'); + dispatch('resetMergeRequests'); - Api.mergeRequests({ scope: state.scope, state: 'opened' }) - .then(({ data }) => { - dispatch('receiveMergeRequestsSuccess', data); - }) + Api.mergeRequests({ scope, state, search }) + .then(({ data }) => dispatch('receiveMergeRequestsSuccess', data)) .catch(() => dispatch('receiveMergeRequestsError')); }; diff --git a/app/assets/javascripts/ide/stores/modules/merge_requests/constants.js b/app/assets/javascripts/ide/stores/modules/merge_requests/constants.js index c25edf11d96..64b7763f257 100644 --- a/app/assets/javascripts/ide/stores/modules/merge_requests/constants.js +++ b/app/assets/javascripts/ide/stores/modules/merge_requests/constants.js @@ -1,5 +1,10 @@ -// eslint-disable-next-line import/prefer-default-export export const scopes = { assignedToMe: 'assigned-to-me', createdByMe: 'created-by-me', }; + +export const states = { + opened: 'opened', + closed: 'closed', + merged: 'merged', +}; diff --git a/app/assets/javascripts/ide/stores/modules/merge_requests/state.js b/app/assets/javascripts/ide/stores/modules/merge_requests/state.js index 7ac555eef49..2947b686c1c 100644 --- a/app/assets/javascripts/ide/stores/modules/merge_requests/state.js +++ b/app/assets/javascripts/ide/stores/modules/merge_requests/state.js @@ -1,7 +1,8 @@ -import { scopes } from './constants'; +import { scopes, states } from './constants'; export default () => ({ isLoading: false, mergeRequests: [], scope: scopes.assignedToMe, + state: states.opened, }); diff --git a/spec/javascripts/ide/stores/modules/merge_requests/actions_spec.js b/spec/javascripts/ide/stores/modules/merge_requests/actions_spec.js index 3b88ac36683..b571cfb963a 100644 --- a/spec/javascripts/ide/stores/modules/merge_requests/actions_spec.js +++ b/spec/javascripts/ide/stores/modules/merge_requests/actions_spec.js @@ -12,7 +12,7 @@ import actions, { import { mergeRequests } from '../../../mock_data'; import testAction from '../../../../helpers/vuex_action_helper'; -describe('IDe merge requests actions', () => { +describe('IDE merge requests actions', () => { let mockedState; let mock; @@ -95,6 +95,21 @@ describe('IDe merge requests actions', () => { params: { scope: 'assigned-to-me', state: 'opened', + search: '', + }, + }); + }); + + it('calls API with search', () => { + const apiSpy = spyOn(axios, 'get').and.callThrough(); + + fetchMergeRequests({ dispatch() {}, state: mockedState }, 'testing search'); + + expect(apiSpy).toHaveBeenCalledWith(jasmine.anything(), { + params: { + scope: 'assigned-to-me', + state: 'opened', + search: 'testing search', }, }); }); @@ -105,7 +120,11 @@ describe('IDe merge requests actions', () => { null, mockedState, [], - [{ type: 'requestMergeRequests' }, { type: 'receiveMergeRequestsSuccess' }], + [ + { type: 'requestMergeRequests' }, + { type: 'resetMergeRequests' }, + { type: 'receiveMergeRequestsSuccess' }, + ], done, ); }); @@ -118,6 +137,7 @@ describe('IDe merge requests actions', () => { [], [ { type: 'requestMergeRequests' }, + { type: 'resetMergeRequests' }, { type: 'receiveMergeRequestsSuccess', payload: mergeRequests }, ], done, @@ -136,7 +156,11 @@ describe('IDe merge requests actions', () => { null, mockedState, [], - [{ type: 'requestMergeRequests' }, { type: 'receiveMergeRequestsError' }], + [ + { type: 'requestMergeRequests' }, + { type: 'resetMergeRequests' }, + { type: 'receiveMergeRequestsError' }, + ], done, ); }); -- cgit v1.2.1