# encoding: utf-8 require 'test_helper' class UserTest < ActiveSupport::TestCase test 'user' do tests = [ { :name => '#1 - simple create', :create => { :firstname => 'Firstname', :lastname => 'Lastname', :email => 'some@example.com', :login => 'some@example.com', :updated_by_id => 1, :created_by_id => 1, }, :create_verify => { :firstname => 'Firstname', :lastname => 'Lastname', :image => nil, :fullname => 'Firstname Lastname', :email => 'some@example.com', :login => 'some@example.com', }, }, { :name => '#2 - simple create - no lastname', :create => { :firstname => 'Firstname Lastname', :lastname => '', :email => 'some@example.com', :login => 'some@example.com', :updated_by_id => 1, :created_by_id => 1, }, :create_verify => { :firstname => 'Firstname', :lastname => 'Lastname', :image => nil, :email => 'some@example.com', :login => 'some@example.com', }, }, { :name => '#3 - simple create - nil as lastname', :create => { :firstname => 'Firstname Lastname', :lastname => nil, :email => 'some@example.com', :login => 'some@example.com', :updated_by_id => 1, :created_by_id => 1, }, :create_verify => { :firstname => 'Firstname', :lastname => 'Lastname', :image => nil, :email => 'some@example.com', :login => 'some@example.com', }, }, { :name => '#4 - simple create - no lastname, firstname with ","', :create => { :firstname => 'Lastname, Firstname', :lastname => '', :email => 'some@example.com', :login => 'some@example.com', :updated_by_id => 1, :created_by_id => 1, }, :create_verify => { :firstname => 'Firstname', :lastname => 'Lastname', :email => 'some@example.com', :login => 'some@example.com', }, }, { :name => '#5 - simple create - no lastname/firstname', :create => { :firstname => '', :lastname => '', :email => 'firstname.lastname@example.com', :login => 'login-1', :updated_by_id => 1, :created_by_id => 1, }, :create_verify => { :firstname => 'Firstname', :lastname => 'Lastname', :fullname => 'Firstname Lastname', :email => 'firstname.lastname@example.com', :login => 'login-1', }, }, { :name => '#6 - simple create - no lastname/firstnam', :create => { :firstname => '', :lastname => '', :email => 'FIRSTNAME.lastname@example.com', :login => 'login-2', :updated_by_id => 1, :created_by_id => 1, }, :create_verify => { :firstname => 'Firstname', :lastname => 'Lastname', :email => 'firstname.lastname@example.com', :login => 'login-2', }, }, { :name => '#7 - simple create - nill as fristname and lastname', :create => { :firstname => nil, :lastname => nil, :email => 'FIRSTNAME.lastname@example.com', :login => 'login-3', :updated_by_id => 1, :created_by_id => 1, }, :create_verify => { :firstname => 'Firstname', :lastname => 'Lastname', :email => 'firstname.lastname@example.com', :login => 'login-3', }, }, { :name => '#8 - update with avatar check', :create => { :firstname => 'Bob', :lastname => 'Smith', :email => 'bob.smith@example.com', :login => 'login-4', :updated_by_id => 1, :created_by_id => 1, }, :create_verify => { :firstname => 'Bob', :lastname => 'Smith', :image => nil, :email => 'bob.smith@example.com', :login => 'login-4', }, :update => { :email => 'unit-test1@znuny.com', }, :update_verify => { :firstname => 'Bob', :lastname => 'Smith', :image => 'a6f7f7f9dac25b2c023d403ef998801c', :image_md5 => 'a6f7f7f9dac25b2c023d403ef998801c', :email => 'unit-test1@znuny.com', :login => 'login-4', } }, { :name => '#9 - update create with avatar check', :create => { :firstname => 'Bob', :lastname => 'Smith', :email => 'unit-test2@znuny.com', :login => 'login-5', :updated_by_id => 1, :created_by_id => 1, }, :create_verify => { :firstname => 'Bob', :lastname => 'Smith', :image => '8765a1ac93f54405d8dfdd856c48c31f', :image_md5 => '8765a1ac93f54405d8dfdd856c48c31f', :email => 'unit-test2@znuny.com', :login => 'login-5', }, :update => { :email => 'unit-test1@znuny.com', }, :update_verify => { :firstname => 'Bob', :lastname => 'Smith', :image => 'a6f7f7f9dac25b2c023d403ef998801c', :image_md5 => 'a6f7f7f9dac25b2c023d403ef998801c', :email => 'unit-test1@znuny.com', :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| # check if user exists user = User.where( :login => test[:create][:login] ).first if user user.destroy end user = User.create( test[:create] ) test[:create_verify].each { |key, value| 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] })" ) end } if test[:create_verify][:image_md5] file = Avatar.get_by_hash( user.image ) file_md5 = Digest::MD5.hexdigest( file.content ) assert_equal( test[:create_verify][:image_md5], file_md5, "create avatar md5 check in (#{ test[:name] })" ) end if test[:update] user.update_attributes( test[:update] ) test[:update_verify].each { |key, value| 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] })" ) end } if test[:update_verify][:image_md5] file = Avatar.get_by_hash( user.image ) file_md5 = Digest::MD5.hexdigest( file.content ) assert_equal( test[:update_verify][:image_md5], file_md5, "update avatar md5 check in (#{ test[:name] })" ) end end user.destroy } end end