Improved tests.

This commit is contained in:
Martin Edenhofer 2015-01-07 21:42:12 +01:00
parent c291b70ec2
commit beb137a6b8
2 changed files with 81 additions and 4 deletions

View file

@ -31,7 +31,7 @@ class User < ApplicationModel
include User::SearchIndex
before_create :check_name, :check_email, :check_login, :check_password
before_update :check_password, :check_email
before_update :check_password, :check_email, :check_login
after_create :avatar_check, :notify_clients_after_create
after_update :avatar_check, :notify_clients_after_update
after_destroy :avatar_destroy, :notify_clients_after_destroy
@ -95,6 +95,9 @@ returns
end
fullname = fullname + self.lastname
end
if fullname == '' && self.email
fullname = self.email
end
fullname
end
@ -439,15 +442,26 @@ returns
end
def check_login
# use email as login if not given
if !self.login && self.email
self.login = self.email
end
# if email has changed, login is old email, change also login
if self.changes && self.changes['email']
if self.changes['email'][0] == self.login
self.login = self.email
end
end
# check if login already exists
if self.login
self.login = self.login.downcase
check = true
while check
exists = User.where( :login => self.login ).first
if exists
if exists && exists.id != self.id
self.login = self.login + rand(999).to_s
else
check = false

View file

@ -18,6 +18,7 @@ class UserTest < ActiveSupport::TestCase
:firstname => 'Firstname',
:lastname => 'Lastname',
:image => nil,
:fullname => 'Firstname Lastname',
:email => 'some@example.com',
:login => 'some@example.com',
},
@ -88,6 +89,7 @@ class UserTest < ActiveSupport::TestCase
:create_verify => {
:firstname => 'Firstname',
:lastname => 'Lastname',
:fullname => 'Firstname Lastname',
:email => 'firstname.lastname@example.com',
:login => 'login-1',
},
@ -185,6 +187,59 @@ class UserTest < ActiveSupport::TestCase
:login => 'login-5',
}
},
{
:name => '#10 - update create with login/email check',
:create => {
:firstname => '',
:lastname => '',
:email => 'caoyaoewfzfw@21222cn.com',
:updated_by_id => 1,
:created_by_id => 1,
},
:create_verify => {
:firstname => '',
:lastname => '',
:fullname => 'caoyaoewfzfw@21222cn.com',
:email => 'caoyaoewfzfw@21222cn.com',
:login => 'caoyaoewfzfw@21222cn.com',
},
:update => {
:email => 'caoyaoewfzfw@212224cn.com',
},
:update_verify => {
:firstname => '',
:lastname => '',
:email => 'caoyaoewfzfw@212224cn.com',
:fullname => 'caoyaoewfzfw@212224cn.com',
:login => 'caoyaoewfzfw@212224cn.com',
}
},
{
:name => '#11 - update create with login/email check',
:create => {
:firstname => 'Firstname',
:lastname => 'Lastname',
:email => 'some_tEst11@example.com',
:updated_by_id => 1,
:created_by_id => 1,
},
:create_verify => {
:firstname => 'Firstname',
:lastname => 'Lastname',
:fullname => 'Firstname Lastname',
:email => 'some_test11@example.com',
},
:update => {
:email => 'some_Test11-1@example.com',
},
:update_verify => {
:firstname => 'Firstname',
:lastname => 'Lastname',
:email => 'some_test11-1@example.com',
:fullname => 'Firstname Lastname',
:login => 'some_test11-1@example.com',
}
},
]
tests.each { |test|
@ -199,7 +254,11 @@ class UserTest < ActiveSupport::TestCase
test[:create_verify].each { |key, value|
next if key == :image_md5
assert_equal( value, user[key], "create check #{ key } in (#{ test[:name] })" )
if user.respond_to?( key )
assert_equal( value, user.send(key), "create check #{ key } in (#{ test[:name] })" )
else
assert_equal( value, user[key], "create check #{ key } in (#{ test[:name] })" )
end
}
if test[:create_verify][:image_md5]
file = Avatar.get_by_hash( user.image )
@ -211,7 +270,11 @@ class UserTest < ActiveSupport::TestCase
test[:update_verify].each { |key, value|
next if key == :image_md5
assert_equal( value, user[key], "update check #{ key } in (#{ test[:name] })" )
if user.respond_to?( key )
assert_equal( value, user.send(key), "update check #{ key } in (#{ test[:name] })" )
else
assert_equal( value, user[key], "update check #{ key } in (#{ test[:name] })" )
end
}
if test[:update_verify][:image_md5]