summaryrefslogtreecommitdiff
path: root/spec/javascripts/behaviors/quick_submit_spec.js
diff options
context:
space:
mode:
authorFatih Acet <acetfatih@gmail.com>2016-07-24 23:45:11 +0300
committerFatih Acet <acetfatih@gmail.com>2016-07-24 23:45:11 +0300
commitaaa9509d120524573085e94af9de5cdde83e3271 (patch)
tree3824cffd4cdd132ee9cf75a00a7624f5ccc0dabd /spec/javascripts/behaviors/quick_submit_spec.js
parent56b79181adc0bd6e9abef97ea075c14be971a01a (diff)
downloadgitlab-ce-aaa9509d120524573085e94af9de5cdde83e3271.tar.gz
ES6ify all the things!
Diffstat (limited to 'spec/javascripts/behaviors/quick_submit_spec.js')
-rw-r--r--spec/javascripts/behaviors/quick_submit_spec.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/spec/javascripts/behaviors/quick_submit_spec.js b/spec/javascripts/behaviors/quick_submit_spec.js
new file mode 100644
index 00000000000..4c52ecd903d
--- /dev/null
+++ b/spec/javascripts/behaviors/quick_submit_spec.js
@@ -0,0 +1,93 @@
+
+/*= require behaviors/quick_submit */
+
+(function() {
+ describe('Quick Submit behavior', function() {
+ var keydownEvent;
+ fixture.preload('behaviors/quick_submit.html');
+ beforeEach(function() {
+ fixture.load('behaviors/quick_submit.html');
+ $('form').submit(function(e) {
+ return e.preventDefault();
+ });
+ return this.spies = {
+ submit: spyOnEvent('form', 'submit')
+ };
+ });
+ it('does not respond to other keyCodes', function() {
+ $('input.quick-submit-input').trigger(keydownEvent({
+ keyCode: 32
+ }));
+ return expect(this.spies.submit).not.toHaveBeenTriggered();
+ });
+ it('does not respond to Enter alone', function() {
+ $('input.quick-submit-input').trigger(keydownEvent({
+ ctrlKey: false,
+ metaKey: false
+ }));
+ return expect(this.spies.submit).not.toHaveBeenTriggered();
+ });
+ it('does not respond to repeated events', function() {
+ $('input.quick-submit-input').trigger(keydownEvent({
+ repeat: true
+ }));
+ return expect(this.spies.submit).not.toHaveBeenTriggered();
+ });
+ it('disables submit buttons', function() {
+ $('textarea').trigger(keydownEvent());
+ expect($('input[type=submit]')).toBeDisabled();
+ return expect($('button[type=submit]')).toBeDisabled();
+ });
+ if (navigator.userAgent.match(/Macintosh/)) {
+ it('responds to Meta+Enter', function() {
+ $('input.quick-submit-input').trigger(keydownEvent());
+ return expect(this.spies.submit).toHaveBeenTriggered();
+ });
+ it('excludes other modifier keys', function() {
+ $('input.quick-submit-input').trigger(keydownEvent({
+ altKey: true
+ }));
+ $('input.quick-submit-input').trigger(keydownEvent({
+ ctrlKey: true
+ }));
+ $('input.quick-submit-input').trigger(keydownEvent({
+ shiftKey: true
+ }));
+ return expect(this.spies.submit).not.toHaveBeenTriggered();
+ });
+ } else {
+ it('responds to Ctrl+Enter', function() {
+ $('input.quick-submit-input').trigger(keydownEvent());
+ return expect(this.spies.submit).toHaveBeenTriggered();
+ });
+ it('excludes other modifier keys', function() {
+ $('input.quick-submit-input').trigger(keydownEvent({
+ altKey: true
+ }));
+ $('input.quick-submit-input').trigger(keydownEvent({
+ metaKey: true
+ }));
+ $('input.quick-submit-input').trigger(keydownEvent({
+ shiftKey: true
+ }));
+ return expect(this.spies.submit).not.toHaveBeenTriggered();
+ });
+ }
+ return keydownEvent = function(options) {
+ var defaults;
+ if (navigator.userAgent.match(/Macintosh/)) {
+ defaults = {
+ keyCode: 13,
+ metaKey: true
+ };
+ } else {
+ defaults = {
+ keyCode: 13,
+ ctrlKey: true
+ };
+ }
+ return $.Event('keydown', $.extend({}, defaults, options));
+ };
+ });
+
+}).call(this);