From ac8895b7413080a0f1a1bfe92227d3871e0ba1c7 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Tue, 20 Nov 2018 11:44:42 +0000 Subject: Open first 10 merge request files in IDE Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/51635 --- app/assets/javascripts/ide/stores/actions/file.js | 7 +++++-- app/assets/javascripts/ide/stores/actions/merge_request.js | 1 + changelogs/unreleased/ide-open-all-mr-files.yml | 5 +++++ spec/javascripts/ide/stores/actions/merge_request_spec.js | 1 + 4 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/ide-open-all-mr-files.yml diff --git a/app/assets/javascripts/ide/stores/actions/file.js b/app/assets/javascripts/ide/stores/actions/file.js index 30dcf7ef4df..2cdbb312b9e 100644 --- a/app/assets/javascripts/ide/stores/actions/file.js +++ b/app/assets/javascripts/ide/stores/actions/file.js @@ -56,7 +56,10 @@ export const setFileActive = ({ commit, state, getters, dispatch }, path) => { dispatch('scrollToTab'); }; -export const getFileData = ({ state, commit, dispatch }, { path, makeFileActive = true }) => { +export const getFileData = ( + { state, commit, dispatch }, + { path, makeFileActive = true, openFile = makeFileActive }, +) => { const file = state.entries[path]; if (file.raw || (file.tempFile && !file.prevPath)) return Promise.resolve(); @@ -72,7 +75,7 @@ export const getFileData = ({ state, commit, dispatch }, { path, makeFileActive setPageTitle(decodeURI(normalizedHeaders['PAGE-TITLE'])); commit(types.SET_FILE_DATA, { data, file }); - if (makeFileActive) commit(types.TOGGLE_FILE_OPEN, path); + if (openFile) commit(types.TOGGLE_FILE_OPEN, path); if (makeFileActive) dispatch('setFileActive', path); commit(types.TOGGLE_LOADING, { entry: file }); }) diff --git a/app/assets/javascripts/ide/stores/actions/merge_request.js b/app/assets/javascripts/ide/stores/actions/merge_request.js index 3ac2f8b3698..8404c6d4f72 100644 --- a/app/assets/javascripts/ide/stores/actions/merge_request.js +++ b/app/assets/javascripts/ide/stores/actions/merge_request.js @@ -161,6 +161,7 @@ export const openMergeRequest = ( dispatch('getFileData', { path: change.new_path, makeFileActive: ind === 0, + openFile: true, }); } } diff --git a/changelogs/unreleased/ide-open-all-mr-files.yml b/changelogs/unreleased/ide-open-all-mr-files.yml new file mode 100644 index 00000000000..6a5ea8908fc --- /dev/null +++ b/changelogs/unreleased/ide-open-all-mr-files.yml @@ -0,0 +1,5 @@ +--- +title: Open first 10 merge request files in IDE +merge_request: +author: +type: fixed diff --git a/spec/javascripts/ide/stores/actions/merge_request_spec.js b/spec/javascripts/ide/stores/actions/merge_request_spec.js index 3a4e0d7507f..950c447f924 100644 --- a/spec/javascripts/ide/stores/actions/merge_request_spec.js +++ b/spec/javascripts/ide/stores/actions/merge_request_spec.js @@ -321,6 +321,7 @@ describe('IDE store merge request actions', () => { expect(store.dispatch).toHaveBeenCalledWith('getFileData', { path: change.new_path, makeFileActive: i === 0, + openFile: true, }); }); }) -- cgit v1.2.1 From b24316b2fe757324b037aea7e06ce52d8dfa53d8 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Tue, 20 Nov 2018 15:11:33 +0000 Subject: Added a test for open merge request files --- app/assets/javascripts/ide/stores/actions/file.js | 2 +- .../ide/stores/actions/merge_request_spec.js | 30 +++++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/ide/stores/actions/file.js b/app/assets/javascripts/ide/stores/actions/file.js index 2cdbb312b9e..a297740bd5f 100644 --- a/app/assets/javascripts/ide/stores/actions/file.js +++ b/app/assets/javascripts/ide/stores/actions/file.js @@ -74,7 +74,7 @@ export const getFileData = ( const normalizedHeaders = normalizeHeaders(headers); setPageTitle(decodeURI(normalizedHeaders['PAGE-TITLE'])); - commit(types.SET_FILE_DATA, { data, file }); + if (data) commit(types.SET_FILE_DATA, { data, file }); if (openFile) commit(types.TOGGLE_FILE_OPEN, path); if (makeFileActive) dispatch('setFileActive', path); commit(types.TOGGLE_LOADING, { entry: file }); diff --git a/spec/javascripts/ide/stores/actions/merge_request_spec.js b/spec/javascripts/ide/stores/actions/merge_request_spec.js index 950c447f924..d8e9260e932 100644 --- a/spec/javascripts/ide/stores/actions/merge_request_spec.js +++ b/spec/javascripts/ide/stores/actions/merge_request_spec.js @@ -262,16 +262,28 @@ describe('IDE store merge request actions', () => { bar: {}, }; - spyOn(store, 'dispatch').and.callFake(type => { + const originalDispatch = store.dispatch; + + spyOn(store, 'dispatch').and.callFake((type, payload) => { switch (type) { case 'getMergeRequestData': return Promise.resolve(testMergeRequest); case 'getMergeRequestChanges': return Promise.resolve(testMergeRequestChanges); - default: + case 'getFiles': + case 'getMergeRequestVersions': + case 'getBranchData': + case 'setFileMrChange': return Promise.resolve(); + default: + return originalDispatch(type, payload); } }); + spyOn(service, 'getFileData').and.callFake(() => + Promise.resolve({ + headers: {}, + }), + ); }); it('dispatch actions for merge request data', done => { @@ -303,7 +315,17 @@ describe('IDE store merge request actions', () => { }); it('updates activity bar view and gets file data, if changes are found', done => { - testMergeRequestChanges.changes = [{ new_path: 'foo' }, { new_path: 'bar' }]; + store.state.entries.foo = { + url: 'test', + }; + store.state.entries.bar = { + url: 'test', + }; + + testMergeRequestChanges.changes = [ + { new_path: 'foo', path: 'foo' }, + { new_path: 'bar', path: 'bar' }, + ]; openMergeRequest(store, mr) .then(() => { @@ -324,6 +346,8 @@ describe('IDE store merge request actions', () => { openFile: true, }); }); + + expect(store.state.openFiles.length).toBe(testMergeRequestChanges.changes.length); }) .then(done) .catch(done.fail); -- cgit v1.2.1