summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFatih Acet <acetfatih@gmail.com>2017-11-09 19:48:38 +0000
committerFatih Acet <acetfatih@gmail.com>2017-11-09 19:48:38 +0000
commit551c708ce8bbcd98c72c2b86cdcc8006a588215d (patch)
tree73b3b855eb840bb0a9c8b322d432554f7771a972
parent1bf689563bfde933cd3e8d3fb58cb36c1a45d3af (diff)
parent8ba8800660323c516117f040d785ff1e0abac687 (diff)
downloadgitlab-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.vue3
-rw-r--r--spec/javascripts/notes/components/issue_comment_form_spec.js19
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', () => {