diff options
| author | Azul <azul@leap.se> | 2012-12-13 16:01:59 +0100 | 
|---|---|---|
| committer | Azul <azul@leap.se> | 2012-12-13 16:01:59 +0100 | 
| commit | 9762a37ab932ee1a94e973977520c7f4673d78b1 (patch) | |
| tree | 2aa6eb4e27cd9b7cc4651c2c6465be10bcfc422b | |
| parent | 6ff4bd80e0394260c8cd300cfb051451fc7e358f (diff) | |
refactor: allow adding email aliases directly
| -rw-r--r-- | users/app/models/user.rb | 9 | ||||
| -rw-r--r-- | users/test/unit/email_aliases_test.rb | 26 | 
2 files changed, 23 insertions, 12 deletions
diff --git a/users/app/models/user.rb b/users/app/models/user.rb index 0eb244c..7c9002b 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -112,9 +112,16 @@ class User < CouchRest::Model::Base      APP_CONFIG['admins'].include? self.login    end +  def add_email(email) +    email = LocalEmail.new({:email => email}) unless email.is_a? Email +    email_aliases << email +  end + +  # this currently only adds the first email address submitted. +  # All the ui needs for now.    def email_aliases_attributes=(attrs)      if attrs -      email_alias = Email.new(attrs.values.first) +      email_alias = LocalEmail.new(attrs.values.first)        email_aliases << email_alias      end    end diff --git a/users/test/unit/email_aliases_test.rb b/users/test/unit/email_aliases_test.rb index cec0c0b..3c731e1 100644 --- a/users/test/unit/email_aliases_test.rb +++ b/users/test/unit/email_aliases_test.rb @@ -12,7 +12,7 @@ class EmailAliasTest < ActiveSupport::TestCase      assert_equal [], @user.email_aliases    end -  test "adding email alias" do +  test "adding email alias through params" do      email_alias = "valid_alias@domain.net"      @user.attributes = {:email_aliases_attributes => {"0" => {:email => email_alias}}}      assert @user.changed? @@ -20,31 +20,35 @@ class EmailAliasTest < ActiveSupport::TestCase      assert_equal email_alias, @user.email_aliases.first.to_s    end +  test "adding email alias directly" do +    email_alias = "valid_alias@domain.net" +    @user.add_email(email_alias) +    assert @user.changed? +    assert @user.save +    assert_equal email_alias, @user.reload.email_aliases.first.to_s +  end +    test "duplicated email aliases are invalid" do      email_alias = "valid_alias@domain.net" -    email_aliases = { -      "0" => {:email => email_alias}, -      "1" => {:email => email_alias} -      } -    @user.attributes = {:email_aliases_attributes => email_aliases} +    @user.add_email(email_alias)      @user.save -    # add some more -    @user.attributes = {:email_aliases_attributes => email_aliases} +    # add again +    @user.add_email(email_alias)      assert @user.changed?      assert !@user.valid?    end    test "email is invalid as email alias" do      email_alias = "valid_alias@domain.net" -    email_aliases = { "0" => {:email => email_alias} } -    @user.attributes = {:email_aliases_attributes => email_aliases, :email => email_alias} +    @user.email = email_alias +    @user.add_email(email_alias)      assert @user.changed?      assert !@user.valid?    end    test "find user by email alias" do      email_alias = "valid_alias@domain.net" -    @user.attributes = {:email_aliases_attributes => {"0" => {:email => email_alias}}} +    @user.add_email(email_alias)      assert @user.save      assert_equal @user, User.find_by_email_or_alias(email_alias)      assert_equal @user, User.find_by_email_alias(email_alias)  | 
