diff options
| author | Phil Hughes <me@iamphill.com> | 2018-09-14 16:51:25 +0100 |
|---|---|---|
| committer | André Luís <aluis@gitlab.com> | 2018-09-21 11:59:41 +0100 |
| commit | 2497c29ef0d1e178c8b3aa96e8304ee6765bae4e (patch) | |
| tree | af895b8945ee8f7ae88c18826385538f10cb171e /spec/javascripts/diffs | |
| parent | 2036458e150db2840dbb1219f1cb5e079b648deb (diff) | |
| download | gitlab-ce-2497c29ef0d1e178c8b3aa96e8304ee6765bae4e.tar.gz | |
Use returned discussion from API
We now use the returned discussion instead of re-fetching
all of the discussions and filtering out the ones we don't need.
This speeds up the process of creating a diff discussions
by saving us another API request before we can render the discussion
Diffstat (limited to 'spec/javascripts/diffs')
| -rw-r--r-- | spec/javascripts/diffs/components/diff_line_note_form_spec.js | 29 | ||||
| -rw-r--r-- | spec/javascripts/diffs/store/actions_spec.js | 46 |
2 files changed, 50 insertions, 25 deletions
diff --git a/spec/javascripts/diffs/components/diff_line_note_form_spec.js b/spec/javascripts/diffs/components/diff_line_note_form_spec.js index 6fe5fdaf7f9..f31fc1f0e2b 100644 --- a/spec/javascripts/diffs/components/diff_line_note_form_spec.js +++ b/spec/javascripts/diffs/components/diff_line_note_form_spec.js @@ -69,22 +69,21 @@ describe('DiffLineNoteForm', () => { describe('saveNoteForm', () => { it('should call saveNote action with proper params', done => { - let isPromiseCalled = false; - const formDataSpy = spyOnDependency(DiffLineNoteForm, 'getNoteFormData').and.returnValue({ - postData: 1, - }); - const saveNoteSpy = spyOn(component, 'saveNote').and.returnValue( - new Promise(() => { - isPromiseCalled = true; - done(); - }), + const saveDiffDiscussionSpy = spyOn(component, 'saveDiffDiscussion').and.returnValue( + Promise.resolve(), ); - - component.handleSaveNote('note body'); - - expect(formDataSpy).toHaveBeenCalled(); - expect(saveNoteSpy).toHaveBeenCalled(); - expect(isPromiseCalled).toEqual(true); + spyOnProperty(component, 'formData').and.returnValue('formData'); + + component + .handleSaveNote('note body') + .then(() => { + expect(saveDiffDiscussionSpy).toHaveBeenCalledWith({ + note: 'note body', + formData: 'formData', + }); + }) + .then(done) + .catch(done.fail); }); }); }); diff --git a/spec/javascripts/diffs/store/actions_spec.js b/spec/javascripts/diffs/store/actions_spec.js index 4c662fac231..5b1a0b2f392 100644 --- a/spec/javascripts/diffs/store/actions_spec.js +++ b/spec/javascripts/diffs/store/actions_spec.js @@ -21,6 +21,7 @@ import actions, { loadCollapsedDiff, expandAllFiles, toggleFileDiscussions, + saveDiffDiscussion, } from '~/diffs/store/actions'; import * as types from '~/diffs/store/mutation_types'; import { reduceDiscussionsToLineCodes } from '~/notes/stores/utils'; @@ -245,7 +246,7 @@ describe('DiffsStoreActions', () => { }); describe('startRenderDiffsQueue', () => { - it('should set all files to RENDER_FILE', done => { + it('should set all files to RENDER_FILE', () => { const state = { diffFiles: [ { @@ -268,16 +269,10 @@ describe('DiffsStoreActions', () => { }); }; - startRenderDiffsQueue({ state, commit: pseudoCommit }) - .then(() => { - expect(state.diffFiles[0].renderIt).toBeTruthy(); - expect(state.diffFiles[1].renderIt).toBeTruthy(); + startRenderDiffsQueue({ state, commit: pseudoCommit }); - done(); - }) - .catch(() => { - done.fail(); - }); + expect(state.diffFiles[0].renderIt).toBeTruthy(); + expect(state.diffFiles[1].renderIt).toBeTruthy(); }); }); @@ -582,4 +577,35 @@ describe('DiffsStoreActions', () => { expect(handleLocationHashSpy).toHaveBeenCalledTimes(1); }); }); + + describe('saveDiffDiscussion', () => { + beforeEach(() => { + spyOnDependency(actions, 'getNoteFormData').and.returnValue('testData'); + spyOnDependency(actions, 'reduceDiscussionsToLineCodes').and.returnValue('discussions'); + }); + + it('dispatches actions', done => { + const dispatch = jasmine.createSpy('dispatch').and.callFake(name => { + switch (name) { + case 'saveNote': + return Promise.resolve({ + discussion: 'test', + }); + case 'updateDiscussion': + return Promise.resolve('discussion'); + default: + return Promise.resolve({}); + } + }); + + saveDiffDiscussion({ dispatch }, { note: {}, formData: {} }) + .then(() => { + expect(dispatch.calls.argsFor(0)).toEqual(['saveNote', 'testData', { root: true }]); + expect(dispatch.calls.argsFor(1)).toEqual(['updateDiscussion', 'test', { root: true }]); + expect(dispatch.calls.argsFor(2)).toEqual(['assignDiscussionsToDiff', 'discussions']); + }) + .then(done) + .catch(done.fail); + }); + }); }); |
