From 9762a37ab932ee1a94e973977520c7f4673d78b1 Mon Sep 17 00:00:00 2001 From: Azul Date: Thu, 13 Dec 2012 16:01:59 +0100 Subject: refactor: allow adding email aliases directly --- users/app/models/user.rb | 9 ++++++++- users/test/unit/email_aliases_test.rb | 26 +++++++++++++++----------- 2 files changed, 23 insertions(+), 12 deletions(-) (limited to 'users') 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) -- cgit v1.2.3