diff options
author | Clement Ho <clemmakesapps@gmail.com> | 2017-06-27 16:06:41 +0000 |
---|---|---|
committer | Clement Ho <clemmakesapps@gmail.com> | 2017-06-27 16:06:41 +0000 |
commit | 762a1d60db0deca6d371fa66521b5494d74e42a7 (patch) | |
tree | 6b58775cd2c9f4707e5158d0d001dc0b55cfa0e3 | |
parent | 6ab588665c786a187b47cce8097325d22613cdb3 (diff) | |
parent | 64b0a799f3a3d6099734f83803519624bc0be7c1 (diff) | |
download | gitlab-ce-762a1d60db0deca6d371fa66521b5494d74e42a7.tar.gz |
Merge branch '34014-submitting-reply-to-existing-diff-discussion-using-cmd-ctrl-enter-submits-twice-and-refreshes-page' into 'master'
Resolve "Submitting reply to existing diff discussion using Cmd/Ctrl+Enter submits twice and refreshes page"
Closes #34014
See merge request !12352
-rw-r--r-- | app/assets/javascripts/behaviors/quick_submit.js | 2 | ||||
-rw-r--r-- | spec/javascripts/behaviors/quick_submit_spec.js | 21 |
2 files changed, 18 insertions, 5 deletions
diff --git a/app/assets/javascripts/behaviors/quick_submit.js b/app/assets/javascripts/behaviors/quick_submit.js index 1f9e0448084..bc693616460 100644 --- a/app/assets/javascripts/behaviors/quick_submit.js +++ b/app/assets/javascripts/behaviors/quick_submit.js @@ -40,7 +40,7 @@ $(document).on('keydown.quick_submit', '.js-quick-submit', (e) => { e.preventDefault(); const $form = $(e.target).closest('form'); - const $submitButton = $form.find('input[type=submit], button[type=submit]'); + const $submitButton = $form.find('input[type=submit], button[type=submit]').first(); if (!$submitButton.attr('disabled')) { $submitButton.trigger('click', [e]); diff --git a/spec/javascripts/behaviors/quick_submit_spec.js b/spec/javascripts/behaviors/quick_submit_spec.js index f56b99f8a16..6dc48f9a293 100644 --- a/spec/javascripts/behaviors/quick_submit_spec.js +++ b/spec/javascripts/behaviors/quick_submit_spec.js @@ -40,16 +40,29 @@ import '~/behaviors/quick_submit'; it('disables input of type submit', function() { const submitButton = $('.js-quick-submit input[type=submit]'); this.textarea.trigger(keydownEvent()); + expect(submitButton).toBeDisabled(); }); it('disables button of type submit', function() { - // button doesn't exist in fixture, add it manually - const submitButton = $('<button type="submit">Submit it</button>'); - submitButton.insertAfter(this.textarea); - + const submitButton = $('.js-quick-submit input[type=submit]'); this.textarea.trigger(keydownEvent()); + expect(submitButton).toBeDisabled(); }); + it('only clicks one submit', function() { + const existingSubmit = $('.js-quick-submit input[type=submit]'); + // Add an extra submit button + const newSubmit = $('<button type="submit">Submit it</button>'); + newSubmit.insertAfter(this.textarea); + + const oldClick = spyOnEvent(existingSubmit, 'click'); + const newClick = spyOnEvent(newSubmit, 'click'); + + this.textarea.trigger(keydownEvent()); + + expect(oldClick).not.toHaveBeenTriggered(); + expect(newClick).toHaveBeenTriggered(); + }); // We cannot stub `navigator.userAgent` for CI's `rake karma` task, so we'll // only run the tests that apply to the current platform if (navigator.userAgent.match(/Macintosh/)) { |