From 61edda0fca05a6e9c18ea03354267527cdc20ab2 Mon Sep 17 00:00:00 2001
From: Steffen van Bergerem <svbergerem@online.de>
Date: Fri, 3 Jul 2015 16:54:38 +0200
Subject: [PATCH] Aspect creation modal now creates an aspect when pressing
 enter

---
 .../app/views/aspect_create_view.js            | 10 +++++++++-
 .../app/views/aspect_create_view_spec.js       | 18 ++++++++++++++++++
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/app/assets/javascripts/app/views/aspect_create_view.js b/app/assets/javascripts/app/views/aspect_create_view.js
index 0ec50afa20..fa9de946ca 100644
--- a/app/assets/javascripts/app/views/aspect_create_view.js
+++ b/app/assets/javascripts/app/views/aspect_create_view.js
@@ -4,7 +4,8 @@ app.views.AspectCreate = app.views.Base.extend({
   templateName: "aspect_create_modal",
 
   events: {
-    "click .btn.btn-primary": "createAspect"
+    "click .btn.btn-primary": "createAspect",
+    "keypress input#aspect_name": "inputKeypress"
   },
 
   initialize: function(opts) {
@@ -30,6 +31,13 @@ app.views.AspectCreate = app.views.Base.extend({
     return this.$("#aspect_name").val();
   },
 
+  inputKeypress: function(evt) {
+    if(evt.which === 13) {
+      evt.preventDefault();
+      this.createAspect();
+    }
+  },
+
   createAspect: function() {
     var aspect = new app.models.Aspect({
       "person_id": this._personId,
diff --git a/spec/javascripts/app/views/aspect_create_view_spec.js b/spec/javascripts/app/views/aspect_create_view_spec.js
index 96eabfe7f4..1961cff086 100644
--- a/spec/javascripts/app/views/aspect_create_view_spec.js
+++ b/spec/javascripts/app/views/aspect_create_view_spec.js
@@ -40,6 +40,24 @@ describe("app.views.AspectCreate", function() {
       });
     });
 
+    describe("#inputKeypress", function() {
+      beforeEach(function() {
+        this.view.render();
+        spyOn(this.view, "createAspect");
+      });
+
+      it("should call createAspect if the enter key was pressed", function() {
+        var e = $.Event("keypress", { which: 13 });
+        this.view.inputKeypress(e);
+        expect(this.view.createAspect).toHaveBeenCalled();
+      });
+
+      it("shouldn't call createAspect if another key was pressed", function() {
+        var e = $.Event("keypress", { which: 42 });
+        this.view.inputKeypress(e);
+        expect(this.view.createAspect).not.toHaveBeenCalled();
+      });
+    });
 
     describe("#createAspect", function() {
       beforeEach(function() {
-- 
GitLab