diff options
author | Fatih Acet <acetfatih@gmail.com> | 2017-11-09 19:48:38 +0000 |
---|---|---|
committer | Fatih Acet <acetfatih@gmail.com> | 2017-11-09 19:48:38 +0000 |
commit | 551c708ce8bbcd98c72c2b86cdcc8006a588215d (patch) | |
tree | 73b3b855eb840bb0a9c8b322d432554f7771a972 | |
parent | 1bf689563bfde933cd3e8d3fb58cb36c1a45d3af (diff) | |
parent | 8ba8800660323c516117f040d785ff1e0abac687 (diff) | |
download | gitlab-ce-551c708ce8bbcd98c72c2b86cdcc8006a588215d.tar.gz |
Merge branch 'disable-issue-action-button-if-isSubmitting' into 'master'
Disable issue action button whilst submitting and test
See merge request gitlab-org/gitlab-ce!15211
-rw-r--r-- | app/assets/javascripts/notes/components/issue_comment_form.vue | 3 | ||||
-rw-r--r-- | spec/javascripts/notes/components/issue_comment_form_spec.js | 19 |
2 files changed, 21 insertions, 1 deletions
diff --git a/app/assets/javascripts/notes/components/issue_comment_form.vue b/app/assets/javascripts/notes/components/issue_comment_form.vue index db8f85759b2..30e02554b65 100644 --- a/app/assets/javascripts/notes/components/issue_comment_form.vue +++ b/app/assets/javascripts/notes/components/issue_comment_form.vue @@ -357,7 +357,8 @@ @click="handleSave(true)" v-if="canUpdateIssue" :class="actionButtonClassNames" - class="btn btn-comment btn-comment-and-close"> + :disabled="isSubmitting" + class="btn btn-comment btn-comment-and-close js-action-button"> {{issueActionButtonTitle}} </button> <button diff --git a/spec/javascripts/notes/components/issue_comment_form_spec.js b/spec/javascripts/notes/components/issue_comment_form_spec.js index a26fc8f63cc..db75262b562 100644 --- a/spec/javascripts/notes/components/issue_comment_form_spec.js +++ b/spec/javascripts/notes/components/issue_comment_form_spec.js @@ -55,6 +55,25 @@ describe('issue_comment_form component', () => { expect(vm.toggleIssueState).toHaveBeenCalled(); }); + + it('should disable action button whilst submitting', (done) => { + const saveNotePromise = Promise.resolve(); + vm.note = 'hello world'; + spyOn(vm, 'saveNote').and.returnValue(saveNotePromise); + spyOn(vm, 'stopPolling'); + + const actionButton = vm.$el.querySelector('.js-action-button'); + + vm.handleSave(); + + Vue.nextTick() + .then(() => expect(actionButton.disabled).toBeTruthy()) + .then(saveNotePromise) + .then(Vue.nextTick) + .then(() => expect(actionButton.disabled).toBeFalsy()) + .then(done) + .catch(done.fail); + }); }); describe('textarea', () => { |