From f7f5e39f75adb8f5336322aae007f70f5e683f2d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9gis=20Hanol?= <regis@hanol.fr>
Date: Fri, 23 Jan 2015 20:31:48 +0100
Subject: [PATCH] FIX: Minor Admin bug with a setting when creating a new group

---
 app/assets/javascripts/admin/templates/group.hbs | 2 +-
 app/assets/javascripts/discourse/models/group.js | 7 ++++++-
 app/controllers/admin/groups_controller.rb       | 5 +++--
 app/serializers/basic_group_serializer.rb        | 4 ----
 spec/controllers/admin/groups_controller_spec.rb | 3 ++-
 5 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/app/assets/javascripts/admin/templates/group.hbs b/app/assets/javascripts/admin/templates/group.hbs
index ac76d7056ad..2800ac2b9c1 100644
--- a/app/assets/javascripts/admin/templates/group.hbs
+++ b/app/assets/javascripts/admin/templates/group.hbs
@@ -46,7 +46,7 @@
   {{#unless automatic}}
     <div>
       <label for="automatic_membership">{{i18n 'admin.groups.automatic_membership_email_domains'}}</label>
-      {{list-setting name="automatic_membership" settingValue=automatic_membership_email_domains}}
+      {{list-setting name="automatic_membership" settingValue=emailDomains}}
       <label>
         {{input type="checkbox" checked=automatic_membership_retroactive}}
         {{i18n 'admin.groups.automatic_membership_retroactive'}}
diff --git a/app/assets/javascripts/discourse/models/group.js b/app/assets/javascripts/discourse/models/group.js
index a598b9822b4..5d7ff91c2b3 100644
--- a/app/assets/javascripts/discourse/models/group.js
+++ b/app/assets/javascripts/discourse/models/group.js
@@ -11,6 +11,11 @@ Discourse.Group = Discourse.Model.extend({
   offset: 0,
   user_count: 0,
 
+  emailDomains: function() {
+    var value = this.get("automatic_membership_email_domains");
+    return Em.isEmpty(value) ? "" : value;
+  }.property("automatic_membership_email_domains"),
+
   type: function() {
     return this.get("automatic") ? "automatic" : "custom";
   }.property("automatic"),
@@ -69,7 +74,7 @@ Discourse.Group = Discourse.Model.extend({
       name: this.get('name'),
       alias_level: this.get('alias_level'),
       visible: !!this.get('visible'),
-      automatic_membership_email_domains: this.get('automatic_membership_email_domains'),
+      automatic_membership_email_domains: this.get('emailDomains'),
       automatic_membership_retroactive: !!this.get('automatic_membership_retroactive')
     };
   },
diff --git a/app/controllers/admin/groups_controller.rb b/app/controllers/admin/groups_controller.rb
index 65b737392ea..1b62db41e52 100644
--- a/app/controllers/admin/groups_controller.rb
+++ b/app/controllers/admin/groups_controller.rb
@@ -23,6 +23,7 @@ class Admin::GroupsController < Admin::AdminController
     group = Group.new
 
     group.name = (params[:name] || '').strip
+    group.alias_level = params[:alias_level].to_i if params[:alias_level].present?
     group.visible = params[:visible] == "true"
     group.automatic_membership_email_domains = params[:automatic_membership_email_domains]
     group.automatic_membership_retroactive = params[:automatic_membership_retroactive] == "true"
@@ -37,12 +38,12 @@ class Admin::GroupsController < Admin::AdminController
   def update
     group = Group.find(params[:id])
 
+    # group rename is ignored for automatic groups
+    group.name = params[:name] if params[:name] && !group.automatic
     group.alias_level = params[:alias_level].to_i if params[:alias_level].present?
     group.visible = params[:visible] == "true"
     group.automatic_membership_email_domains = params[:automatic_membership_email_domains]
     group.automatic_membership_retroactive = params[:automatic_membership_retroactive] == "true"
-    # group rename is ignored for automatic groups
-    group.name = params[:name] if params[:name] && !group.automatic
 
     if group.save
       render_serialized(group, BasicGroupSerializer)
diff --git a/app/serializers/basic_group_serializer.rb b/app/serializers/basic_group_serializer.rb
index 2bf2d111be6..0e22994212c 100644
--- a/app/serializers/basic_group_serializer.rb
+++ b/app/serializers/basic_group_serializer.rb
@@ -7,8 +7,4 @@ class BasicGroupSerializer < ApplicationSerializer
              :visible,
              :automatic_membership_email_domains,
              :automatic_membership_retroactive
-
-  def automatic_membership_email_domains
-    object.automatic_membership_email_domains.presence || ""
-  end
 end
diff --git a/spec/controllers/admin/groups_controller_spec.rb b/spec/controllers/admin/groups_controller_spec.rb
index 8efd09bd5ed..6e85473edd8 100644
--- a/spec/controllers/admin/groups_controller_spec.rb
+++ b/spec/controllers/admin/groups_controller_spec.rb
@@ -21,12 +21,13 @@ describe Admin::GroupsController do
       expect(response.status).to eq(200)
       expect(::JSON.parse(response.body).keep_if {|r| r["id"] == group.id }).to eq([{
         "id"=>group.id,
+        "automatic"=>false,
         "name"=>group.name,
         "user_count"=>1,
         "automatic"=>false,
         "alias_level"=>0,
         "visible"=>true,
-        "automatic_membership_email_domains"=>"",
+        "automatic_membership_email_domains"=>nil,
         "automatic_membership_retroactive"=>false
       }])
     end