From 78303cd5c59a4a89780830774927631da0a4ae07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 21 Dec 2009 19:57:17 +0100 Subject: [PATCH] Got another bunch of tests passing with MongoMapper. --- lib/devise/locales/en.yml | 1 + lib/devise/models.rb | 10 ++++++++-- test/models/rememberable_test.rb | 2 +- test/models/validatable_test.rb | 1 + test/orm/active_record.rb | 2 +- test/orm/mongo_mapper.rb | 9 ++++++++- test/rails_app/app/mongo_mapper/admin.rb | 2 +- test/rails_app/app/mongo_mapper/user.rb | 1 + test/support/assertions_helper.rb | 15 +++++++++++++++ test/support/model_tests_helper.rb | 16 +--------------- test/test_helpers_test.rb | 2 +- 11 files changed, 39 insertions(+), 22 deletions(-) diff --git a/lib/devise/locales/en.yml b/lib/devise/locales/en.yml index 82274a9d..cca2ec3e 100644 --- a/lib/devise/locales/en.yml +++ b/lib/devise/locales/en.yml @@ -18,3 +18,4 @@ en: confirmation_instructions: 'Confirmation instructions' reset_password_instructions: 'Reset password instructions' + diff --git a/lib/devise/models.rb b/lib/devise/models.rb index 792b9326..8178e6a0 100644 --- a/lib/devise/models.rb +++ b/lib/devise/models.rb @@ -114,9 +114,15 @@ module Devise if value.present? record.send(:"#{attribute}=", value) - record.errors.add(attribute, error, :default => error.to_s.gsub("_", " ")) + options = { :default => error.to_s.gsub("_", " ") } else - record.errors.add(attribute, :blank) + error, options = :blank, {} + end + + begin + record.errors.add(attribute, error, options) + rescue ArgumentError + record.errors.add(attribute, error.to_s.gsub("_", " ")) end end diff --git a/test/models/rememberable_test.rb b/test/models/rememberable_test.rb index 7e7e123e..51d3af03 100644 --- a/test/models/rememberable_test.rb +++ b/test/models/rememberable_test.rb @@ -56,7 +56,7 @@ class RememberableTest < ActiveSupport::TestCase test 'valid remember token should also verify if remember is not expired' do user = create_user user.remember_me! - user.update_attribute(:remember_created_at, 3.days.ago) + user.update_attributes(:remember_created_at => 3.days.ago) assert_not user.valid_remember_token?(user.remember_token) end diff --git a/test/models/validatable_test.rb b/test/models/validatable_test.rb index 193ed3f9..2bcd7994 100644 --- a/test/models/validatable_test.rb +++ b/test/models/validatable_test.rb @@ -1,6 +1,7 @@ require 'test/test_helper' class ValidatableTest < ActiveSupport::TestCase + extend Devise::TestSilencer if [:mongo_mapper, :data_mapper].include?(DEVISE_ORM) test 'should require email to be set' do user = new_user(:email => nil) diff --git a/test/orm/active_record.rb b/test/orm/active_record.rb index e76ba090..79ff1b99 100644 --- a/test/orm/active_record.rb +++ b/test/orm/active_record.rb @@ -1,4 +1,5 @@ require File.join(File.dirname(__FILE__), '..', 'rails_app', 'config', 'environment') +require 'test_help' ActiveRecord::Migration.verbose = false ActiveRecord::Base.logger = Logger.new(nil) @@ -22,7 +23,6 @@ ActiveRecord::Schema.define(:version => 1) do end end -require 'test_help' class ActiveSupport::TestCase self.use_transactional_fixtures = true self.use_instantiated_fixtures = false diff --git a/test/orm/mongo_mapper.rb b/test/orm/mongo_mapper.rb index c2d1631a..56d57e6a 100644 --- a/test/orm/mongo_mapper.rb +++ b/test/orm/mongo_mapper.rb @@ -1,10 +1,17 @@ require 'mongo_mapper' MongoMapper.database = "devise-test-suite" MongoMapper.connection = Mongo::Connection.new('127.0.0.1', 27017) -require File.join(File.dirname(__FILE__), '..', 'rails_app', 'config', 'environment') +require File.join(File.dirname(__FILE__), '..', 'rails_app', 'config', 'environment') require 'test_help' +module MongoMapper::Document + # TODO This should not be required + def invalid? + !valid? + end +end + class ActiveSupport::TestCase setup do User.delete_all diff --git a/test/rails_app/app/mongo_mapper/admin.rb b/test/rails_app/app/mongo_mapper/admin.rb index 2be4d2c3..def92572 100644 --- a/test/rails_app/app/mongo_mapper/admin.rb +++ b/test/rails_app/app/mongo_mapper/admin.rb @@ -4,6 +4,6 @@ class Admin devise :all, :timeoutable, :except => [:recoverable, :confirmable, :rememberable, :validatable, :trackable] def self.find_for_authentication(conditions) - last(:conditions => conditions) + last(:conditions => conditions, :order => "email") end end diff --git a/test/rails_app/app/mongo_mapper/user.rb b/test/rails_app/app/mongo_mapper/user.rb index c58b8429..433e8e64 100644 --- a/test/rails_app/app/mongo_mapper/user.rb +++ b/test/rails_app/app/mongo_mapper/user.rb @@ -1,5 +1,6 @@ class User include MongoMapper::Document + key :created_at, DateTime devise :all, :timeoutable # attr_accessible :username, :email, :password, :password_confirmation end diff --git a/test/support/assertions_helper.rb b/test/support/assertions_helper.rb index 10910fad..264f52bc 100644 --- a/test/support/assertions_helper.rb +++ b/test/support/assertions_helper.rb @@ -19,4 +19,19 @@ class ActiveSupport::TestCase def assert_email_not_sent(&block) assert_no_difference('ActionMailer::Base.deliveries.size') { yield } end + + # Execute the block setting the given values and restoring old values after + # the block is executed. + def swap(object, new_values) + old_values = {} + new_values.each do |key, value| + old_values[key] = object.send key + object.send :"#{key}=", value + end + yield + ensure + old_values.each do |key, value| + object.send :"#{key}=", value + end + end end diff --git a/test/support/model_tests_helper.rb b/test/support/model_tests_helper.rb index 8deb8d4b..16e0bd62 100644 --- a/test/support/model_tests_helper.rb +++ b/test/support/model_tests_helper.rb @@ -22,6 +22,7 @@ class ActiveSupport::TestCase def valid_attributes(attributes={}) { :email => generate_unique_email, + :created_at => Time.now.utc, :password => '123456', :password_confirmation => '123456' }.update(attributes) end @@ -33,19 +34,4 @@ class ActiveSupport::TestCase def create_user(attributes={}) User.create!(valid_attributes(attributes)) end - - # Execute the block setting the given values and restoring old values after - # the block is executed. - def swap(object, new_values) - old_values = {} - new_values.each do |key, value| - old_values[key] = object.send key - object.send :"#{key}=", value - end - yield - ensure - old_values.each do |key, value| - object.send :"#{key}=", value - end - end end diff --git a/test/test_helpers_test.rb b/test/test_helpers_test.rb index 3ef7366a..6199c3d4 100644 --- a/test/test_helpers_test.rb +++ b/test/test_helpers_test.rb @@ -56,6 +56,6 @@ class TestHelpersTest < ActionController::TestCase end def create_user(i=nil) - User.create!(:email => "jose.valim#{i}@plataformatec.com", :password => "123456") + super(:email => "jose.valim#{i}@plataformatec.com") end end