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 include User::SearchIndex
before_create :check_name, :check_email, :check_login, :check_password 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_create :avatar_check, :notify_clients_after_create
after_update :avatar_check, :notify_clients_after_update after_update :avatar_check, :notify_clients_after_update
after_destroy :avatar_destroy, :notify_clients_after_destroy after_destroy :avatar_destroy, :notify_clients_after_destroy
@ -95,6 +95,9 @@ returns
end end
fullname = fullname + self.lastname fullname = fullname + self.lastname
end end
if fullname == '' && self.email
fullname = self.email
end
fullname fullname
end end
@ -439,15 +442,26 @@ returns
end end
def check_login def check_login
# use email as login if not given
if !self.login && self.email if !self.login && self.email
self.login = self.email self.login = self.email
end 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 if self.login
self.login = self.login.downcase self.login = self.login.downcase
check = true check = true
while check while check
exists = User.where( :login => self.login ).first exists = User.where( :login => self.login ).first
if exists if exists && exists.id != self.id
self.login = self.login + rand(999).to_s self.login = self.login + rand(999).to_s
else else
check = false check = false

View file

@ -18,6 +18,7 @@ class UserTest < ActiveSupport::TestCase
:firstname => 'Firstname', :firstname => 'Firstname',
:lastname => 'Lastname', :lastname => 'Lastname',
:image => nil, :image => nil,
:fullname => 'Firstname Lastname',
:email => 'some@example.com', :email => 'some@example.com',
:login => 'some@example.com', :login => 'some@example.com',
}, },
@ -88,6 +89,7 @@ class UserTest < ActiveSupport::TestCase
:create_verify => { :create_verify => {
:firstname => 'Firstname', :firstname => 'Firstname',
:lastname => 'Lastname', :lastname => 'Lastname',
:fullname => 'Firstname Lastname',
:email => 'firstname.lastname@example.com', :email => 'firstname.lastname@example.com',
:login => 'login-1', :login => 'login-1',
}, },
@ -185,6 +187,59 @@ class UserTest < ActiveSupport::TestCase
:login => 'login-5', :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| tests.each { |test|
@ -199,7 +254,11 @@ class UserTest < ActiveSupport::TestCase
test[:create_verify].each { |key, value| test[:create_verify].each { |key, value|
next if key == :image_md5 next if key == :image_md5
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] })" ) assert_equal( value, user[key], "create check #{ key } in (#{ test[:name] })" )
end
} }
if test[:create_verify][:image_md5] if test[:create_verify][:image_md5]
file = Avatar.get_by_hash( user.image ) file = Avatar.get_by_hash( user.image )
@ -211,7 +270,11 @@ class UserTest < ActiveSupport::TestCase
test[:update_verify].each { |key, value| test[:update_verify].each { |key, value|
next if key == :image_md5 next if key == :image_md5
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] })" ) assert_equal( value, user[key], "update check #{ key } in (#{ test[:name] })" )
end
} }
if test[:update_verify][:image_md5] if test[:update_verify][:image_md5]