From 89eae2d18711023d5c27f5375add219511523f0a Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Fri, 12 Mar 2010 22:19:10 +0100 Subject: adds coverage for the issue addressed in fe43bbd [#4166 state:committed] Signed-off-by: Jeremy Kemper --- activerecord/test/cases/associations_test.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/associations_test.rb b/activerecord/test/cases/associations_test.rb index 9bc34bd750..d0d646d460 100644 --- a/activerecord/test/cases/associations_test.rb +++ b/activerecord/test/cases/associations_test.rb @@ -180,6 +180,20 @@ class AssociationProxyTest < ActiveRecord::TestCase end end + def test_splat_does_not_invoke_to_a_on_singular_targets + Kernel.module_eval do + alias original_to_a to_a + def to_a + [:_] + end + end + assert_not_equal [:_], [*posts(:welcome).author] + ensure + Kernel.module_eval do + alias to_a original_to_a + end + end + def setup_dangling_association josh = Author.create(:name => "Josh") p = Post.create(:title => "New on Edge", :body => "More cool stuff!", :author => josh) -- cgit v1.2.3 From c8f1aac76196bdea8e1fe84a69f0b08c2372c533 Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Sat, 13 Mar 2010 23:57:36 +0100 Subject: restricts a test to < 1.9, and rewrites it using a proper expectation Signed-off-by: wycats --- activerecord/test/cases/associations_test.rb | 16 +++++----------- activerecord/test/cases/helper.rb | 1 + 2 files changed, 6 insertions(+), 11 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/associations_test.rb b/activerecord/test/cases/associations_test.rb index d0d646d460..d99fb44f01 100644 --- a/activerecord/test/cases/associations_test.rb +++ b/activerecord/test/cases/associations_test.rb @@ -180,17 +180,11 @@ class AssociationProxyTest < ActiveRecord::TestCase end end - def test_splat_does_not_invoke_to_a_on_singular_targets - Kernel.module_eval do - alias original_to_a to_a - def to_a - [:_] - end - end - assert_not_equal [:_], [*posts(:welcome).author] - ensure - Kernel.module_eval do - alias to_a original_to_a + if RUBY_VERSION < '1.9' + def test_splat_does_not_invoke_to_a_on_singular_targets + author = posts(:welcome).author + author.reload.target.expects(:to_a).never + [*author] end end diff --git a/activerecord/test/cases/helper.rb b/activerecord/test/cases/helper.rb index e831ebf36c..1fb59d3589 100644 --- a/activerecord/test/cases/helper.rb +++ b/activerecord/test/cases/helper.rb @@ -7,6 +7,7 @@ require 'config' require 'test/unit' require 'stringio' +require 'mocha' require 'active_record' require 'active_support/dependencies' -- cgit v1.2.3 From 30f5f955448c67aaa6a92b7e1704aa837aa536f8 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Mon, 15 Mar 2010 11:00:11 -0700 Subject: Hack to keep column metadata queries out of test query counts --- .../cases/associations/has_many_through_associations_test.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/associations/has_many_through_associations_test.rb b/activerecord/test/cases/associations/has_many_through_associations_test.rb index 608d5a3608..d47c8bba7d 100644 --- a/activerecord/test/cases/associations/has_many_through_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_through_associations_test.rb @@ -18,10 +18,14 @@ require 'models/developer' class HasManyThroughAssociationsTest < ActiveRecord::TestCase fixtures :posts, :readers, :people, :comments, :authors, :owners, :pets, :toys, :jobs, :references, :companies - def test_associate_existing - assert_queries(2) { posts(:thinking);people(:david) } + # Dummies to force column loads so query counts are clean. + def setup + Person.create :first_name => 'gummy' + Reader.create :person_id => 0, :post_id => 0 + end - posts(:thinking).people + def test_associate_existing + assert_queries(2) { posts(:thinking); people(:david) } assert_queries(1) do posts(:thinking).people << people(:david) -- cgit v1.2.3 From 1f2738261f3c3c061540bb20e3a1edec96b76034 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Mon, 15 Mar 2010 13:56:19 -0700 Subject: Hack to keep column metadata queries out of test query counts --- activerecord/test/cases/dirty_test.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/dirty_test.rb b/activerecord/test/cases/dirty_test.rb index 4961d12a44..a64ccb2120 100644 --- a/activerecord/test/cases/dirty_test.rb +++ b/activerecord/test/cases/dirty_test.rb @@ -26,6 +26,11 @@ class NumericData < ActiveRecord::Base end class DirtyTest < ActiveRecord::TestCase + # Dummy to force column loads so query counts are clean. + def setup + Person.create :first_name => 'foo' + end + def test_attribute_changes # New record - no changes. pirate = Pirate.new -- cgit v1.2.3 From 1def14309f32cc1c7d66b8625754ba2827410c96 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Mon, 15 Mar 2010 18:09:33 -0700 Subject: cleaning up a bunch of parse time warnings in AR [#4186 state:resolved] Signed-off-by: wycats --- activerecord/test/cases/associations/eager_test.rb | 2 +- .../associations/has_many_through_associations_test.rb | 4 ++-- .../cases/associations/inner_join_association_test.rb | 4 ++-- activerecord/test/cases/base_test.rb | 18 +++++++++--------- activerecord/test/cases/defaults_test.rb | 4 ++-- activerecord/test/cases/log_subscriber_test.rb | 10 +++++----- activerecord/test/cases/method_scoping_test.rb | 2 +- activerecord/test/cases/migration_test.rb | 4 ++-- activerecord/test/cases/named_scope_test.rb | 4 ++-- 9 files changed, 26 insertions(+), 26 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/associations/eager_test.rb b/activerecord/test/cases/associations/eager_test.rb index ffa6d45948..42a891bc3b 100644 --- a/activerecord/test/cases/associations/eager_test.rb +++ b/activerecord/test/cases/associations/eager_test.rb @@ -805,7 +805,7 @@ class EagerAssociationTest < ActiveRecord::TestCase end def test_include_has_many_using_primary_key - expected = Firm.find(1).clients_using_primary_key.sort_by &:name + expected = Firm.find(1).clients_using_primary_key.sort_by(&:name) # Oracle adapter truncates alias to 30 characters if current_adapter?(:OracleAdapter) firm = Firm.find 1, :include => :clients_using_primary_key, :order => 'clients_using_primary_keys_companies'[0,30]+'.name' diff --git a/activerecord/test/cases/associations/has_many_through_associations_test.rb b/activerecord/test/cases/associations/has_many_through_associations_test.rb index d47c8bba7d..ff799191c2 100644 --- a/activerecord/test/cases/associations/has_many_through_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_through_associations_test.rb @@ -291,7 +291,7 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase ], log.last(2) post.people_with_callbacks = [people(:michael),people(:david), Person.new(:first_name => "Julian"), Person.create!(:first_name => "Roger")] - assert_equal (%w(Ted Bob Sam Lary) * 2).sort, log[-12..-5].collect(&:last).sort + assert_equal((%w(Ted Bob Sam Lary) * 2).sort, log[-12..-5].collect(&:last).sort) assert_equal [ [:added, :before, "Julian"], [:added, :after, "Julian"], @@ -300,7 +300,7 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase ], log.last(4) post.people_with_callbacks.clear - assert_equal (%w(Michael David Julian Roger) * 2).sort, log.last(8).collect(&:last).sort + assert_equal((%w(Michael David Julian Roger) * 2).sort, log.last(8).collect(&:last).sort) end def test_dynamic_find_should_respect_association_include diff --git a/activerecord/test/cases/associations/inner_join_association_test.rb b/activerecord/test/cases/associations/inner_join_association_test.rb index 43abcae75e..4ba867dc7c 100644 --- a/activerecord/test/cases/associations/inner_join_association_test.rb +++ b/activerecord/test/cases/associations/inner_join_association_test.rb @@ -15,12 +15,12 @@ class InnerJoinAssociationTest < ActiveRecord::TestCase def test_construct_finder_sql_ignores_empty_joins_hash sql = Author.joins({}).to_sql - assert_no_match /JOIN/i, sql + assert_no_match(/JOIN/i, sql) end def test_construct_finder_sql_ignores_empty_joins_array sql = Author.joins([]).to_sql - assert_no_match /JOIN/i, sql + assert_no_match(/JOIN/i, sql) end def test_find_with_implicit_inner_joins_honors_readonly_without_select diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index e3047fe873..8774ed58aa 100755 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -674,10 +674,10 @@ class BasicsTest < ActiveRecord::TestCase def test_decrement_counter Topic.decrement_counter("replies_count", 2) - assert_equal -1, Topic.find(2).replies_count + assert_equal(-1, Topic.find(2).replies_count) Topic.decrement_counter("replies_count", 2) - assert_equal -2, Topic.find(2).replies_count + assert_equal(-2, Topic.find(2).replies_count) end def test_reset_counters @@ -1533,7 +1533,7 @@ class BasicsTest < ActiveRecord::TestCase def test_auto_id auto = AutoId.new auto.save - assert (auto.id > 0) + assert(auto.id > 0) end def quote_column_name(name) @@ -2181,7 +2181,7 @@ class BasicsTest < ActiveRecord::TestCase end def test_inspect_new_instance - assert_match /Topic id: nil/, Topic.new.inspect + assert_match(/Topic id: nil/, Topic.new.inspect) end def test_inspect_limited_select_instance @@ -2240,9 +2240,9 @@ class BasicsTest < ActiveRecord::TestCase ActiveRecord::Base.benchmark("Debug Topic Count", :level => :debug) { Topic.count } ActiveRecord::Base.benchmark("Warn Topic Count", :level => :warn) { Topic.count } ActiveRecord::Base.benchmark("Error Topic Count", :level => :error) { Topic.count } - assert_no_match /Debug Topic Count/, log.string - assert_match /Warn Topic Count/, log.string - assert_match /Error Topic Count/, log.string + assert_no_match(/Debug Topic Count/, log.string) + assert_match(/Warn Topic Count/, log.string) + assert_match(/Error Topic Count/, log.string) ensure ActiveRecord::Base.logger = original_logger end @@ -2253,8 +2253,8 @@ class BasicsTest < ActiveRecord::TestCase ActiveRecord::Base.logger = Logger.new(log) ActiveRecord::Base.benchmark("Logging", :level => :debug, :silence => true) { ActiveRecord::Base.logger.debug "Loud" } ActiveRecord::Base.benchmark("Logging", :level => :debug, :silence => false) { ActiveRecord::Base.logger.debug "Quiet" } - assert_no_match /Loud/, log.string - assert_match /Quiet/, log.string + assert_no_match(/Loud/, log.string) + assert_match(/Quiet/, log.string) ensure ActiveRecord::Base.logger = original_logger end diff --git a/activerecord/test/cases/defaults_test.rb b/activerecord/test/cases/defaults_test.rb index b4032c23e6..bba216ae19 100644 --- a/activerecord/test/cases/defaults_test.rb +++ b/activerecord/test/cases/defaults_test.rb @@ -24,7 +24,7 @@ class DefaultTest < ActiveRecord::TestCase assert_instance_of Fixnum, default.positive_integer assert_equal 1, default.positive_integer assert_instance_of Fixnum, default.negative_integer - assert_equal -1, default.negative_integer + assert_equal(-1, default.negative_integer) assert_instance_of BigDecimal, default.decimal_number assert_equal BigDecimal.new("2.78"), default.decimal_number end @@ -33,7 +33,7 @@ class DefaultTest < ActiveRecord::TestCase if current_adapter?(:PostgreSQLAdapter) def test_multiline_default_text # older postgres versions represent the default with escapes ("\\012" for a newline) - assert ( "--- []\n\n" == Default.columns_hash['multiline_default'].default || + assert( "--- []\n\n" == Default.columns_hash['multiline_default'].default || "--- []\\012\\012" == Default.columns_hash['multiline_default'].default) end end diff --git a/activerecord/test/cases/log_subscriber_test.rb b/activerecord/test/cases/log_subscriber_test.rb index f3b94eb829..6ba84fa57b 100644 --- a/activerecord/test/cases/log_subscriber_test.rb +++ b/activerecord/test/cases/log_subscriber_test.rb @@ -26,8 +26,8 @@ class LogSubscriberTest < ActiveSupport::TestCase Developer.all wait assert_equal 1, @logger.logged(:debug).size - assert_match /Developer Load/, @logger.logged(:debug).last - assert_match /SELECT .*?FROM .?developers.?/, @logger.logged(:debug).last + assert_match(/Developer Load/, @logger.logged(:debug).last) + assert_match(/SELECT .*?FROM .?developers.?/, @logger.logged(:debug).last) end def test_cached_queries @@ -37,7 +37,7 @@ class LogSubscriberTest < ActiveSupport::TestCase end wait assert_equal 2, @logger.logged(:debug).size - assert_match /CACHE/, @logger.logged(:debug).last - assert_match /SELECT .*?FROM .?developers.?/, @logger.logged(:debug).last + assert_match(/CACHE/, @logger.logged(:debug).last) + assert_match(/SELECT .*?FROM .?developers.?/, @logger.logged(:debug).last) end -end \ No newline at end of file +end diff --git a/activerecord/test/cases/method_scoping_test.rb b/activerecord/test/cases/method_scoping_test.rb index 3151457440..a3b496a0e6 100644 --- a/activerecord/test/cases/method_scoping_test.rb +++ b/activerecord/test/cases/method_scoping_test.rb @@ -382,7 +382,7 @@ class NestedScopingTest < ActiveRecord::TestCase Developer.send(:with_scope, :find => { :conditions => "salary < 100000" }) do Developer.send(:with_scope, :find => { :offset => 1, :order => 'id asc' }) do # Oracle adapter does not generated space after asc therefore trailing space removed from regex - assert_sql /ORDER BY id asc/ do + assert_sql(/ORDER BY id asc/) do assert_equal(poor_jamis, Developer.find(:first, :order => 'id asc')) end end diff --git a/activerecord/test/cases/migration_test.rb b/activerecord/test/cases/migration_test.rb index dd32eeeff2..3181f27bc2 100644 --- a/activerecord/test/cases/migration_test.rb +++ b/activerecord/test/cases/migration_test.rb @@ -477,7 +477,7 @@ if ActiveRecord::Base.connection.supports_migrations? assert_not_equal "Z", bob.moment_of_truth.zone # US/Eastern is -5 hours from GMT assert_equal Rational(-5, 24), bob.moment_of_truth.offset - assert_match /\A-05:?00\Z/, bob.moment_of_truth.zone #ruby 1.8.6 uses HH:MM, prior versions use HHMM + assert_match(/\A-05:?00\Z/, bob.moment_of_truth.zone) #ruby 1.8.6 uses HH:MM, prior versions use HHMM assert_equal DateTime::ITALY, bob.moment_of_truth.start end end @@ -493,7 +493,7 @@ if ActiveRecord::Base.connection.supports_migrations? ActiveRecord::Migration.add_column :people, :intelligence_quotient, :tinyint Person.reset_column_information - assert_match /tinyint/, Person.columns_hash['intelligence_quotient'].sql_type + assert_match(/tinyint/, Person.columns_hash['intelligence_quotient'].sql_type) ensure ActiveRecord::Migration.remove_column :people, :intelligence_quotient rescue nil end diff --git a/activerecord/test/cases/named_scope_test.rb b/activerecord/test/cases/named_scope_test.rb index 894d96346e..6c2b4fa3a7 100644 --- a/activerecord/test/cases/named_scope_test.rb +++ b/activerecord/test/cases/named_scope_test.rb @@ -83,8 +83,8 @@ class NamedScopeTest < ActiveRecord::TestCase end def test_scopes_are_composable - assert_equal (approved = Topic.find(:all, :conditions => {:approved => true})), Topic.approved - assert_equal (replied = Topic.find(:all, :conditions => 'replies_count > 0')), Topic.replied + assert_equal((approved = Topic.find(:all, :conditions => {:approved => true})), Topic.approved) + assert_equal((replied = Topic.find(:all, :conditions => 'replies_count > 0')), Topic.replied) assert !(approved == replied) assert !(approved & replied).empty? -- cgit v1.2.3 From dcf1441c0f8c405b1d44cce2e0fbf86a2396dcf1 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Mon, 15 Mar 2010 18:33:20 -0700 Subject: removing dead code from activerecord tests. [#4187 state:resolved] Signed-off-by: wycats --- .../cases/associations/has_one_associations_test.rb | 9 --------- .../test/cases/associations/join_model_test.rb | 12 ------------ activerecord/test/cases/reflection_test.rb | 6 ------ .../test/cases/validations/i18n_validation_test.rb | 19 ------------------- 4 files changed, 46 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/associations/has_one_associations_test.rb b/activerecord/test/cases/associations/has_one_associations_test.rb index d5dbb88886..7372f2da1b 100644 --- a/activerecord/test/cases/associations/has_one_associations_test.rb +++ b/activerecord/test/cases/associations/has_one_associations_test.rb @@ -186,15 +186,6 @@ class HasOneAssociationsTest < ActiveRecord::TestCase assert_equal account, firm.account end - def test_failing_build_association - firm = Firm.new("name" => "GlobalMegaCorp") - firm.save - - account = firm.build_account - assert !account.save - assert_equal ["can't be empty"], account.errors["credit_limit"] - end - def test_build_association_twice_without_saving_affects_nothing count_of_account = Account.count firm = Firm.find(:first) diff --git a/activerecord/test/cases/associations/join_model_test.rb b/activerecord/test/cases/associations/join_model_test.rb index e9af5a60d8..8bdf8bcd55 100644 --- a/activerecord/test/cases/associations/join_model_test.rb +++ b/activerecord/test/cases/associations/join_model_test.rb @@ -52,18 +52,6 @@ class AssociationsJoinModelTest < ActiveRecord::TestCase assert_equal 1, authors(:mary).unique_categorized_posts.find_all_by_title("So I was thinking").size end - def test_polymorphic_has_many - assert posts(:welcome).taggings.include?(taggings(:welcome_general)) - end - - def test_polymorphic_has_one - assert_equal taggings(:welcome_general), posts(:welcome).tagging - end - - def test_polymorphic_belongs_to - assert_equal posts(:welcome), posts(:welcome).taggings.first.taggable - end - def test_polymorphic_has_many_going_through_join_model assert_equal tags(:general), tag = posts(:welcome).tags.first assert_no_queries do diff --git a/activerecord/test/cases/reflection_test.rb b/activerecord/test/cases/reflection_test.rb index 2c9158aa7b..67818622d7 100644 --- a/activerecord/test/cases/reflection_test.rb +++ b/activerecord/test/cases/reflection_test.rb @@ -22,12 +22,6 @@ class ReflectionTest < ActiveRecord::TestCase assert_equal "Subscriber", Subscriber.model_name.human end - def test_column_null_not_null - subscriber = Subscriber.find(:first) - assert subscriber.column_for_attribute("name").null - assert !subscriber.column_for_attribute("nick").null - end - def test_read_attribute_names assert_equal( %w( id title author_name author_email_address bonus_time written_on last_read content approved replies_count parent_id parent_title type ).sort, diff --git a/activerecord/test/cases/validations/i18n_validation_test.rb b/activerecord/test/cases/validations/i18n_validation_test.rb index a0ff35f948..38fa2b821d 100644 --- a/activerecord/test/cases/validations/i18n_validation_test.rb +++ b/activerecord/test/cases/validations/i18n_validation_test.rb @@ -47,25 +47,6 @@ class I18nValidationTest < ActiveRecord::TestCase @topic.valid? end - # validates_uniqueness_of w/o mocha - - def test_validates_associated_finds_custom_model_key_translation - I18n.backend.store_translations 'en', :activerecord => {:errors => {:models => {:topic => {:attributes => {:title => {:taken => 'custom message'}}}}}} - I18n.backend.store_translations 'en', :activerecord => {:errors => {:messages => {:taken => 'global message'}}} - - Topic.validates_uniqueness_of :title - unique_topic.valid? - assert_equal ['custom message'], unique_topic.errors[:replies] - end - - def test_validates_associated_finds_global_default_translation - I18n.backend.store_translations 'en', :activerecord => {:errors => {:messages => {:taken => 'global message'}}} - - Topic.validates_uniqueness_of :title - unique_topic.valid? - assert_equal ['global message'], unique_topic.errors[:replies] - end - # validates_associated w/ mocha def test_validates_associated_generates_message -- cgit v1.2.3 From 3911a7c197cf40fadab62d17def21db8a3d52f5e Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 18 Mar 2010 10:23:14 -0700 Subject: squelching more warnings in the AR tests. [#4218 state:resolved] Signed-off-by: wycats --- activerecord/test/cases/callbacks_test.rb | 2 +- activerecord/test/cases/fixtures_test.rb | 12 ++++----- activerecord/test/cases/transactions_test.rb | 38 +++++++++++++++++++++++----- 3 files changed, 39 insertions(+), 13 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/callbacks_test.rb b/activerecord/test/cases/callbacks_test.rb index ff2322ac15..58194993f2 100644 --- a/activerecord/test/cases/callbacks_test.rb +++ b/activerecord/test/cases/callbacks_test.rb @@ -139,7 +139,7 @@ class CallbackCancellationDeveloper < ActiveRecord::Base attr_reader :after_save_called, :after_create_called, :after_update_called, :after_destroy_called attr_accessor :cancel_before_save, :cancel_before_create, :cancel_before_update, :cancel_before_destroy - before_save { !@cancel_before_save } + before_save {defined?(@cancel_before_save) ? !@cancel_before_save : false} before_create { !@cancel_before_create } before_update { !@cancel_before_update } before_destroy { !@cancel_before_destroy } diff --git a/activerecord/test/cases/fixtures_test.rb b/activerecord/test/cases/fixtures_test.rb index f965652a9a..e78b522b65 100644 --- a/activerecord/test/cases/fixtures_test.rb +++ b/activerecord/test/cases/fixtures_test.rb @@ -244,14 +244,14 @@ class FixturesWithoutInstantiationTest < ActiveRecord::TestCase fixtures :topics, :developers, :accounts def test_without_complete_instantiation - assert_nil @first - assert_nil @topics - assert_nil @developers - assert_nil @accounts + assert !defined?(@first) + assert !defined?(@topics) + assert !defined?(@developers) + assert !defined?(@accounts) end def test_fixtures_from_root_yml_without_instantiation - assert_nil @unknown + assert !defined?(@unknown), "@unknown is not defined" end def test_accessor_methods @@ -279,7 +279,7 @@ class FixturesWithoutInstanceInstantiationTest < ActiveRecord::TestCase fixtures :topics, :developers, :accounts def test_without_instance_instantiation - assert_nil @first + assert !defined?(@first), "@first is not defined" assert_not_nil @topics assert_not_nil @developers assert_not_nil @accounts diff --git a/activerecord/test/cases/transactions_test.rb b/activerecord/test/cases/transactions_test.rb index aca70b4238..c550030329 100644 --- a/activerecord/test/cases/transactions_test.rb +++ b/activerecord/test/cases/transactions_test.rb @@ -51,6 +51,7 @@ class TransactionTest < ActiveRecord::TestCase assert !Topic.find(2).approved?, "Second should have been unapproved" ensure class << Topic.connection + remove_method :commit_db_transaction alias :commit_db_transaction :real_commit_db_transaction rescue nil end end @@ -382,28 +383,53 @@ class TransactionTest < ActiveRecord::TestCase private def add_exception_raising_after_save_callback_to_topic - Topic.class_eval "def after_save_for_transaction; raise 'Make the transaction rollback' end" + Topic.class_eval <<-eoruby, __FILE__, __LINE__ + 1 + remove_method(:after_save_for_transaction) + def after_save_for_transaction + raise 'Make the transaction rollback' + end + eoruby end def remove_exception_raising_after_save_callback_to_topic - Topic.class_eval "def after_save_for_transaction; end" + Topic.class_eval <<-eoruby, __FILE__, __LINE__ + 1 + remove_method :after_save_for_transaction + def after_save_for_transaction; end + eoruby end def add_exception_raising_after_create_callback_to_topic - Topic.class_eval "def after_create_for_transaction; raise 'Make the transaction rollback' end" + Topic.class_eval <<-eoruby, __FILE__, __LINE__ + 1 + remove_method(:after_create_for_transaction) + def after_create_for_transaction + raise 'Make the transaction rollback' + end + eoruby end def remove_exception_raising_after_create_callback_to_topic - Topic.class_eval "def after_create_for_transaction; end" + Topic.class_eval <<-eoruby, __FILE__, __LINE__ + 1 + remove_method :after_create_for_transaction + def after_create_for_transaction; end + eoruby end %w(validation save destroy).each do |filter| define_method("add_cancelling_before_#{filter}_with_db_side_effect_to_topic") do - Topic.class_eval "def before_#{filter}_for_transaction() Book.create; false end" + Topic.class_eval <<-eoruby, __FILE__, __LINE__ + 1 + remove_method :before_#{filter}_for_transaction + def before_#{filter}_for_transaction + Book.create + false + end + eoruby end define_method("remove_cancelling_before_#{filter}_with_db_side_effect_to_topic") do - Topic.class_eval "def before_#{filter}_for_transaction; end" + Topic.class_eval <<-eoruby, __FILE__, __LINE__ + 1 + remove_method :before_#{filter}_for_transaction + def before_#{filter}_for_transaction; end + eoruby end end end -- cgit v1.2.3 From 34497c0b3638e7fd298da4a1107333fe534f9ca4 Mon Sep 17 00:00:00 2001 From: Evan Phoenix Date: Tue, 16 Mar 2010 13:51:26 -0700 Subject: Remove test ordering bug by using another class --- activerecord/test/cases/callbacks_test.rb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/callbacks_test.rb b/activerecord/test/cases/callbacks_test.rb index 58194993f2..dc7f82b001 100644 --- a/activerecord/test/cases/callbacks_test.rb +++ b/activerecord/test/cases/callbacks_test.rb @@ -43,6 +43,11 @@ class CallbackDeveloper < ActiveRecord::Base end end +class CallbackDeveloperWithFalseValidation < CallbackDeveloper + before_validation proc { |model| model.history << [:before_validation, :returning_false]; return false } + before_validation proc { |model| model.history << [:before_validation, :should_never_get_here] } +end + class ParentDeveloper < ActiveRecord::Base set_table_name 'developers' attr_accessor :after_save_called @@ -437,10 +442,8 @@ class CallbacksTest < ActiveRecord::TestCase end private :assert_save_callbacks_not_called - def test_zzz_callback_returning_false # must be run last since we modify CallbackDeveloper - david = CallbackDeveloper.find(1) - CallbackDeveloper.before_validation proc { |model| model.history << [:before_validation, :returning_false]; return false } - CallbackDeveloper.before_validation proc { |model| model.history << [:before_validation, :should_never_get_here] } + def test_callback_returning_false + david = CallbackDeveloperWithFalseValidation.find(1) david.save assert_equal [ [ :after_find, :method ], -- cgit v1.2.3 From a307fd6bd37d12d8ad6baa7e7fcfd0207e8b354a Mon Sep 17 00:00:00 2001 From: Evan Phoenix Date: Mon, 22 Mar 2010 09:51:44 -0700 Subject: Don't depend on order of elements in Set --- activerecord/test/cases/finder_test.rb | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/finder_test.rb b/activerecord/test/cases/finder_test.rb index d2451f24c1..9e88ec8016 100644 --- a/activerecord/test/cases/finder_test.rb +++ b/activerecord/test/cases/finder_test.rb @@ -502,6 +502,18 @@ class FinderTest < ActiveRecord::TestCase assert_kind_of Time, Topic.find(:first, :conditions => ["id = :id", { :id => 1 }]).written_on end + class SimpleEnumerable + include Enumerable + + def initialize(ary) + @ary = ary + end + + def each(&b) + @ary.each(&b) + end + end + def test_bind_enumerable quoted_abc = %(#{ActiveRecord::Base.connection.quote('a')},#{ActiveRecord::Base.connection.quote('b')},#{ActiveRecord::Base.connection.quote('c')}) @@ -511,12 +523,11 @@ class FinderTest < ActiveRecord::TestCase assert_equal '1,2,3', bind(':a', :a => [1, 2, 3]) assert_equal quoted_abc, bind(':a', :a => %w(a b c)) # ' - require 'set' - assert_equal '1,2,3', bind('?', Set.new([1, 2, 3])) - assert_equal quoted_abc, bind('?', Set.new(%w(a b c))) + assert_equal '1,2,3', bind('?', SimpleEnumerable.new([1, 2, 3])) + assert_equal quoted_abc, bind('?', SimpleEnumerable.new(%w(a b c))) - assert_equal '1,2,3', bind(':a', :a => Set.new([1, 2, 3])) - assert_equal quoted_abc, bind(':a', :a => Set.new(%w(a b c))) # ' + assert_equal '1,2,3', bind(':a', :a => SimpleEnumerable.new([1, 2, 3])) + assert_equal quoted_abc, bind(':a', :a => SimpleEnumerable.new(%w(a b c))) # ' end def test_bind_empty_enumerable -- cgit v1.2.3 From 79b08616244b31b7e63a46d9a6492bc7e67c2813 Mon Sep 17 00:00:00 2001 From: Evan Phoenix Date: Mon, 22 Mar 2010 09:52:07 -0700 Subject: Remove obsolete use case that was broken in AR::Observers --- activerecord/test/cases/lifecycle_test.rb | 40 ------------------------------- 1 file changed, 40 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/lifecycle_test.rb b/activerecord/test/cases/lifecycle_test.rb index aa7ce2ecb6..fcad3e90d3 100644 --- a/activerecord/test/cases/lifecycle_test.rb +++ b/activerecord/test/cases/lifecycle_test.rb @@ -6,25 +6,6 @@ require 'models/minimalistic' class SpecialDeveloper < Developer; end -class TopicManualObserver - include Singleton - - attr_reader :action, :object, :callbacks - - def initialize - Topic.add_observer(self) - @callbacks = [] - end - - def update(callback_method, object) - @callbacks << { "callback_method" => callback_method, "object" => object } - end - - def has_been_notified? - !@callbacks.empty? - end -end - class TopicaAuditor < ActiveRecord::Observer observe :topic @@ -85,27 +66,6 @@ class LifecycleTest < ActiveRecord::TestCase assert_equal original_count - (1 + topic_to_be_destroyed.replies.size), Topic.count end - def test_after_save - ActiveRecord::Base.observers = :topic_manual_observer - ActiveRecord::Base.instantiate_observers - - topic = Topic.find(1) - topic.title = "hello" - topic.save - - assert TopicManualObserver.instance.has_been_notified? - assert_equal :after_save, TopicManualObserver.instance.callbacks.last["callback_method"] - end - - def test_observer_update_on_save - ActiveRecord::Base.observers = TopicManualObserver - ActiveRecord::Base.instantiate_observers - - topic = Topic.find(1) - assert TopicManualObserver.instance.has_been_notified? - assert_equal :after_find, TopicManualObserver.instance.callbacks.first["callback_method"] - end - def test_auto_observer topic_observer = TopicaAuditor.instance assert_nil TopicaAuditor.observed_class -- cgit v1.2.3 From 0b608abeb8fea251d4613458e23bf2b6d564ff60 Mon Sep 17 00:00:00 2001 From: Evan Phoenix Date: Mon, 22 Mar 2010 09:53:07 -0700 Subject: Clear the query cache between tests that test the query cache --- activerecord/test/cases/query_cache_test.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/query_cache_test.rb b/activerecord/test/cases/query_cache_test.rb index 3710f8e40b..91349689bc 100644 --- a/activerecord/test/cases/query_cache_test.rb +++ b/activerecord/test/cases/query_cache_test.rb @@ -10,6 +10,10 @@ require 'models/post' class QueryCacheTest < ActiveRecord::TestCase fixtures :tasks, :topics, :categories, :posts, :categories_posts + def setup + Task.connection.clear_query_cache + end + def test_find_queries assert_queries(2) { Task.find(1); Task.find(1) } end -- cgit v1.2.3 From 4f5de7f89a359924abe21949e0f585682c04dd9f Mon Sep 17 00:00:00 2001 From: Evan Phoenix Date: Mon, 22 Mar 2010 09:59:40 -0700 Subject: Reset class attribute after changing it --- activerecord/test/cases/json_serialization_test.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/json_serialization_test.rb b/activerecord/test/cases/json_serialization_test.rb index 54bc8e2343..a3145d2c04 100644 --- a/activerecord/test/cases/json_serialization_test.rb +++ b/activerecord/test/cases/json_serialization_test.rb @@ -27,6 +27,8 @@ class JsonSerializationTest < ActiveRecord::TestCase @contact = NamespacedContact.new :name => 'whatever' json = @contact.to_json assert_match %r{^\{"namespaced_contact":\{}, json + ensure + NamespacedContact.include_root_in_json = false end def test_should_include_root_in_json -- cgit v1.2.3 From bc48d39e4c0348f627f9bf2d9090082c54a052c7 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 23 Mar 2010 18:01:03 -0700 Subject: do not use unloadable constants in tests [#4260 state:resolved] Signed-off-by: wycats --- activerecord/test/cases/migration_test.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/migration_test.rb b/activerecord/test/cases/migration_test.rb index 3181f27bc2..03ee8dcf3c 100644 --- a/activerecord/test/cases/migration_test.rb +++ b/activerecord/test/cases/migration_test.rb @@ -1109,8 +1109,7 @@ if ActiveRecord::Base.connection.supports_migrations? ActiveRecord::Migrator.up(MIGRATIONS_ROOT + "/valid", 1) # now unload the migrations that have been defined - PeopleHaveLastNames.unloadable - ActiveSupport::Dependencies.remove_unloadable_constants! + Object.send(:remove_const, :PeopleHaveLastNames) ActiveRecord::Migrator.migrate(MIGRATIONS_ROOT + "/valid", nil) -- cgit v1.2.3 From ed21f0c50270139ddb6993acfdaea4586ffd09a3 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 23 Mar 2010 18:20:28 -0700 Subject: expand migration paths before requiring them. [#4240 state:resolved] Signed-off-by: wycats --- activerecord/test/cases/migration_test.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/migration_test.rb b/activerecord/test/cases/migration_test.rb index 03ee8dcf3c..e213986ede 100644 --- a/activerecord/test/cases/migration_test.rb +++ b/activerecord/test/cases/migration_test.rb @@ -1104,6 +1104,19 @@ if ActiveRecord::Base.connection.supports_migrations? assert_equal migrations[0].name, 'InnocentJointable' end + def test_relative_migrations + $".delete_if do |fname| + fname == (MIGRATIONS_ROOT + "/valid/1_people_have_last_names.rb") + end + Object.send(:remove_const, :PeopleHaveLastNames) + + Dir.chdir(MIGRATIONS_ROOT) do + ActiveRecord::Migrator.up("valid/", 1) + end + + assert defined?(PeopleHaveLastNames) + end + def test_only_loads_pending_migrations # migrate up to 1 ActiveRecord::Migrator.up(MIGRATIONS_ROOT + "/valid", 1) -- cgit v1.2.3 From e3a2fae05dfce39bbac86780c28b102acc3aa68f Mon Sep 17 00:00:00 2001 From: Emilio Tagua Date: Thu, 25 Mar 2010 12:27:34 -0300 Subject: Add add_limit_offset! to adapters. --- activerecord/test/cases/adapter_test.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/adapter_test.rb b/activerecord/test/cases/adapter_test.rb index c59be264a4..9b28766405 100644 --- a/activerecord/test/cases/adapter_test.rb +++ b/activerecord/test/cases/adapter_test.rb @@ -142,4 +142,25 @@ class AdapterTest < ActiveRecord::TestCase end end end + + def test_add_limit_offset_should_sanitize_sql_injection_for_limit_without_comas + sql_inject = "1 select * from schema" + assert_equal " LIMIT 1", @connection.add_limit_offset!("", :limit => sql_inject) + if current_adapter?(:MysqlAdapter) + assert_equal " LIMIT 7, 1", @connection.add_limit_offset!("", :limit => sql_inject, :offset => 7) + else + assert_equal " LIMIT 1 OFFSET 7", @connection.add_limit_offset!("", :limit => sql_inject, :offset => 7) + end + end + + def test_add_limit_offset_should_sanitize_sql_injection_for_limit_with_comas + sql_inject = "1, 7 procedure help()" + if current_adapter?(:MysqlAdapter) + assert_equal " LIMIT 1,7", @connection.add_limit_offset!("", :limit => sql_inject) + assert_equal " LIMIT 7, 1", @connection.add_limit_offset!("", :limit => '1 ; DROP TABLE USERS', :offset => 7) + else + assert_equal " LIMIT 1,7", @connection.add_limit_offset!("", :limit => sql_inject) + assert_equal " LIMIT 1,7 OFFSET 7", @connection.add_limit_offset!("", :limit => sql_inject, :offset => 7) + end + end end -- cgit v1.2.3 From afb786ad8a27ae593790a5788441a9083a516195 Mon Sep 17 00:00:00 2001 From: Kris Selden Date: Fri, 26 Mar 2010 15:21:55 -0700 Subject: In PostgreSQLAdapter, switch tables query to use current_schemas function [#918 state:resolved] Signed-off-by: wycats --- activerecord/test/cases/schema_authorization_test_postgresql.rb | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/schema_authorization_test_postgresql.rb b/activerecord/test/cases/schema_authorization_test_postgresql.rb index ba7754513d..2860f1ad48 100644 --- a/activerecord/test/cases/schema_authorization_test_postgresql.rb +++ b/activerecord/test/cases/schema_authorization_test_postgresql.rb @@ -66,6 +66,15 @@ class SchemaAuthorizationTest < ActiveRecord::TestCase end end end + + def test_tables_in_current_schemas + assert !@connection.tables.include?(TABLE_NAME) + USERS.each do |u| + set_session_auth u + assert @connection.tables.include?(TABLE_NAME) + set_session_auth + end + end private def set_session_auth auth = nil -- cgit v1.2.3 From 3a875e618487a06a56f6cf912cf5440f294921cc Mon Sep 17 00:00:00 2001 From: Nathaniel Bibler Date: Sun, 24 Jan 2010 13:06:29 -0500 Subject: Changed behavior of touch and added touch! Originally implemented by Obie Fernandez, updated touch! to act as a thin wrapper to touch. [#2520 state:resolved] Signed-off-by: wycats --- activerecord/test/cases/timestamp_test.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/timestamp_test.rb b/activerecord/test/cases/timestamp_test.rb index 24b237a72b..6c3596347d 100644 --- a/activerecord/test/cases/timestamp_test.rb +++ b/activerecord/test/cases/timestamp_test.rb @@ -30,6 +30,24 @@ class TimestampTest < ActiveRecord::TestCase assert @previously_updated_at != @developer.updated_at end + def test_touching_a_record_updates_its_timestamp_even_if_object_instance_is_invalid + @developer.name = nil + @developer.touch + + assert @previously_updated_at != @developer.updated_at + end + + def test_touch_bang_a_record_updates_its_timestamp + @developer.touch! + + assert @previously_updated_at != @developer.updated_at + end + + def test_touch_banging_a_record_fails_if_object_instance_is_invalid + @developer.name = nil + assert_raise(ActiveRecord::RecordInvalid) { @developer.touch! } + end + def test_touching_a_different_attribute previously_created_at = @developer.created_at @developer.touch(:created_at) @@ -37,6 +55,13 @@ class TimestampTest < ActiveRecord::TestCase assert previously_created_at != @developer.created_at end + def test_touch_banging_a_different_attribute + previously_created_at = @developer.created_at + @developer.touch!(:created_at) + + assert previously_created_at != @developer.created_at + end + def test_saving_a_record_with_a_belongs_to_that_specifies_touching_the_parent_should_update_the_parent_updated_at pet = Pet.first owner = pet.owner -- cgit v1.2.3 From 68ade93cde3fcb3ac9fdfe0541d33d22c2c748d7 Mon Sep 17 00:00:00 2001 From: Pratik Naik Date: Sat, 27 Mar 2010 08:22:32 +0000 Subject: Revert "Changed behavior of touch and added touch! Originally implemented by Obie Fernandez, updated touch! to act as a thin wrapper to touch. [#2520 state:resolved]" This reverts commit 3a875e618487a06a56f6cf912cf5440f294921cc. --- activerecord/test/cases/timestamp_test.rb | 25 ------------------------- 1 file changed, 25 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/timestamp_test.rb b/activerecord/test/cases/timestamp_test.rb index 6c3596347d..24b237a72b 100644 --- a/activerecord/test/cases/timestamp_test.rb +++ b/activerecord/test/cases/timestamp_test.rb @@ -30,24 +30,6 @@ class TimestampTest < ActiveRecord::TestCase assert @previously_updated_at != @developer.updated_at end - def test_touching_a_record_updates_its_timestamp_even_if_object_instance_is_invalid - @developer.name = nil - @developer.touch - - assert @previously_updated_at != @developer.updated_at - end - - def test_touch_bang_a_record_updates_its_timestamp - @developer.touch! - - assert @previously_updated_at != @developer.updated_at - end - - def test_touch_banging_a_record_fails_if_object_instance_is_invalid - @developer.name = nil - assert_raise(ActiveRecord::RecordInvalid) { @developer.touch! } - end - def test_touching_a_different_attribute previously_created_at = @developer.created_at @developer.touch(:created_at) @@ -55,13 +37,6 @@ class TimestampTest < ActiveRecord::TestCase assert previously_created_at != @developer.created_at end - def test_touch_banging_a_different_attribute - previously_created_at = @developer.created_at - @developer.touch!(:created_at) - - assert previously_created_at != @developer.created_at - end - def test_saving_a_record_with_a_belongs_to_that_specifies_touching_the_parent_should_update_the_parent_updated_at pet = Pet.first owner = pet.owner -- cgit v1.2.3 From 41e5c7ed44fedb95636ef9b7a792c46ea03309bd Mon Sep 17 00:00:00 2001 From: Rizwan Reza Date: Sat, 27 Mar 2010 12:57:41 +0430 Subject: primary_key now supports :limit. [#876 state:resolved] Signed-off-by: wycats --- activerecord/test/cases/schema_dumper_test.rb | 11 +++++++++-- activerecord/test/schema/schema.rb | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/schema_dumper_test.rb b/activerecord/test/cases/schema_dumper_test.rb index 1c43e3c5b5..95039289c4 100644 --- a/activerecord/test/cases/schema_dumper_test.rb +++ b/activerecord/test/cases/schema_dumper_test.rb @@ -45,7 +45,7 @@ class SchemaDumperTest < ActiveRecord::TestCase next if column_set.empty? lengths = column_set.map do |column| - if match = column.match(/t\.(?:integer|decimal|float|datetime|timestamp|time|date|text|binary|string|boolean)\s+"/) + if match = column.match(/t\.(?:integer|decimal|float|datetime|timestamp|time|date|text|binary|string|boolean|primary_key)\s+"/) match[0].length end end @@ -169,6 +169,13 @@ class SchemaDumperTest < ActiveRecord::TestCase assert_match %r(:primary_key => "movieid"), match[1], "non-standard primary key not preserved" end + def test_mysql_schema_dump_should_honor_primary_keys_limits + output = standard_dump + match = output.match(%r{create_table "primary_key_limit",.*?:id => false\b.*? do (.*?)\bend$}m) + assert_not_nil(match, output) + assert_match %r(t.primary_key\s+"id",\s+:limit => \d+$), match[1], "limit option not found on primary key" + end + if current_adapter?(:MysqlAdapter) def test_schema_dump_should_not_add_default_value_for_mysql_text_field output = standard_dump @@ -211,7 +218,7 @@ class SchemaDumperTest < ActiveRecord::TestCase if current_adapter?(:OracleAdapter) assert_match %r{t.integer\s+"atoms_in_universe",\s+:precision => 38,\s+:scale => 0}, output else - assert_match %r{t.decimal\s+"atoms_in_universe",\s+:precision => 55,\s+:scale => 0}, output + assert_match %r{t.decimal\s+"atoms_in_universe",\s+:limit => 55,\s+:precision => 55,\s+:scale => 0}, output end end diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb index bec4291457..a1932ad16a 100644 --- a/activerecord/test/schema/schema.rb +++ b/activerecord/test/schema/schema.rb @@ -394,6 +394,10 @@ ActiveRecord::Schema.define do t.integer :price end + create_table :primary_key_limit, :force => true, :id => false do |t| + t.primary_key :id, :limit => 8 + end + create_table :projects, :force => true do |t| t.string :name t.string :type -- cgit v1.2.3 From 0cb3311d06c02649fb7444c34b6fdf2214ab85f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 27 Mar 2010 11:05:21 +0100 Subject: Revert "primary_key now supports :limit. [#876 state:resolved]" since it broke AR test suite. This reverts commit 41e5c7ed44fedb95636ef9b7a792c46ea03309bd. --- activerecord/test/cases/schema_dumper_test.rb | 11 ++--------- activerecord/test/schema/schema.rb | 4 ---- 2 files changed, 2 insertions(+), 13 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/schema_dumper_test.rb b/activerecord/test/cases/schema_dumper_test.rb index 95039289c4..1c43e3c5b5 100644 --- a/activerecord/test/cases/schema_dumper_test.rb +++ b/activerecord/test/cases/schema_dumper_test.rb @@ -45,7 +45,7 @@ class SchemaDumperTest < ActiveRecord::TestCase next if column_set.empty? lengths = column_set.map do |column| - if match = column.match(/t\.(?:integer|decimal|float|datetime|timestamp|time|date|text|binary|string|boolean|primary_key)\s+"/) + if match = column.match(/t\.(?:integer|decimal|float|datetime|timestamp|time|date|text|binary|string|boolean)\s+"/) match[0].length end end @@ -169,13 +169,6 @@ class SchemaDumperTest < ActiveRecord::TestCase assert_match %r(:primary_key => "movieid"), match[1], "non-standard primary key not preserved" end - def test_mysql_schema_dump_should_honor_primary_keys_limits - output = standard_dump - match = output.match(%r{create_table "primary_key_limit",.*?:id => false\b.*? do (.*?)\bend$}m) - assert_not_nil(match, output) - assert_match %r(t.primary_key\s+"id",\s+:limit => \d+$), match[1], "limit option not found on primary key" - end - if current_adapter?(:MysqlAdapter) def test_schema_dump_should_not_add_default_value_for_mysql_text_field output = standard_dump @@ -218,7 +211,7 @@ class SchemaDumperTest < ActiveRecord::TestCase if current_adapter?(:OracleAdapter) assert_match %r{t.integer\s+"atoms_in_universe",\s+:precision => 38,\s+:scale => 0}, output else - assert_match %r{t.decimal\s+"atoms_in_universe",\s+:limit => 55,\s+:precision => 55,\s+:scale => 0}, output + assert_match %r{t.decimal\s+"atoms_in_universe",\s+:precision => 55,\s+:scale => 0}, output end end diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb index a1932ad16a..bec4291457 100644 --- a/activerecord/test/schema/schema.rb +++ b/activerecord/test/schema/schema.rb @@ -394,10 +394,6 @@ ActiveRecord::Schema.define do t.integer :price end - create_table :primary_key_limit, :force => true, :id => false do |t| - t.primary_key :id, :limit => 8 - end - create_table :projects, :force => true do |t| t.string :name t.string :type -- cgit v1.2.3 From faeca694b3d4afebf6b623b493e86731e773c462 Mon Sep 17 00:00:00 2001 From: Rizwan Reza Date: Sat, 27 Mar 2010 15:17:07 +0430 Subject: primary_key now supports :limit for MySQL Signed-off-by: wycats --- activerecord/test/cases/schema_dumper_test.rb | 11 +++++++++-- activerecord/test/schema/schema.rb | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/schema_dumper_test.rb b/activerecord/test/cases/schema_dumper_test.rb index 1c43e3c5b5..f79c3f0c3d 100644 --- a/activerecord/test/cases/schema_dumper_test.rb +++ b/activerecord/test/cases/schema_dumper_test.rb @@ -45,7 +45,7 @@ class SchemaDumperTest < ActiveRecord::TestCase next if column_set.empty? lengths = column_set.map do |column| - if match = column.match(/t\.(?:integer|decimal|float|datetime|timestamp|time|date|text|binary|string|boolean)\s+"/) + if match = column.match(/t\.(?:integer|decimal|float|datetime|timestamp|time|date|text|binary|string|boolean|primary_key)\s+"/) match[0].length end end @@ -186,6 +186,13 @@ class SchemaDumperTest < ActiveRecord::TestCase assert_match %r{t.text\s+"medium_text",\s+:limit => 16777215$}, output assert_match %r{t.text\s+"long_text",\s+:limit => 2147483647$}, output end + + def test_mysql_schema_dump_should_honor_primary_keys_limits + output = standard_dump + match = output.match(%r{create_table "primary_key_limit",.*?:id => false\b.*? do (.*?)\bend$}m) + assert_not_nil(match, output) + assert_match %r(t.primary_key\s+"id",\s+:limit => \d+$), match[1], "limit option not found on primary key" + end end def test_schema_dump_includes_decimal_options @@ -211,7 +218,7 @@ class SchemaDumperTest < ActiveRecord::TestCase if current_adapter?(:OracleAdapter) assert_match %r{t.integer\s+"atoms_in_universe",\s+:precision => 38,\s+:scale => 0}, output else - assert_match %r{t.decimal\s+"atoms_in_universe",\s+:precision => 55,\s+:scale => 0}, output + assert_match %r{t.decimal\s+"atoms_in_universe",\s+:limit => 55,\s+:precision => 55,\s+:scale => 0}, output end end diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb index bec4291457..a1932ad16a 100644 --- a/activerecord/test/schema/schema.rb +++ b/activerecord/test/schema/schema.rb @@ -394,6 +394,10 @@ ActiveRecord::Schema.define do t.integer :price end + create_table :primary_key_limit, :force => true, :id => false do |t| + t.primary_key :id, :limit => 8 + end + create_table :projects, :force => true do |t| t.string :name t.string :type -- cgit v1.2.3 From ff522cf4bcb31420baee62aa3c24c98959d80cdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 27 Mar 2010 14:38:48 +0100 Subject: Revert "primary_key now supports :limit for MySQL". Break Sam Ruby app. To reproduce, start a new application, create a scaffold and run test suite. [#876 state:open] This reverts commit faeca694b3d4afebf6b623b493e86731e773c462. --- activerecord/test/cases/schema_dumper_test.rb | 11 ++--------- activerecord/test/schema/schema.rb | 4 ---- 2 files changed, 2 insertions(+), 13 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/schema_dumper_test.rb b/activerecord/test/cases/schema_dumper_test.rb index f79c3f0c3d..1c43e3c5b5 100644 --- a/activerecord/test/cases/schema_dumper_test.rb +++ b/activerecord/test/cases/schema_dumper_test.rb @@ -45,7 +45,7 @@ class SchemaDumperTest < ActiveRecord::TestCase next if column_set.empty? lengths = column_set.map do |column| - if match = column.match(/t\.(?:integer|decimal|float|datetime|timestamp|time|date|text|binary|string|boolean|primary_key)\s+"/) + if match = column.match(/t\.(?:integer|decimal|float|datetime|timestamp|time|date|text|binary|string|boolean)\s+"/) match[0].length end end @@ -186,13 +186,6 @@ class SchemaDumperTest < ActiveRecord::TestCase assert_match %r{t.text\s+"medium_text",\s+:limit => 16777215$}, output assert_match %r{t.text\s+"long_text",\s+:limit => 2147483647$}, output end - - def test_mysql_schema_dump_should_honor_primary_keys_limits - output = standard_dump - match = output.match(%r{create_table "primary_key_limit",.*?:id => false\b.*? do (.*?)\bend$}m) - assert_not_nil(match, output) - assert_match %r(t.primary_key\s+"id",\s+:limit => \d+$), match[1], "limit option not found on primary key" - end end def test_schema_dump_includes_decimal_options @@ -218,7 +211,7 @@ class SchemaDumperTest < ActiveRecord::TestCase if current_adapter?(:OracleAdapter) assert_match %r{t.integer\s+"atoms_in_universe",\s+:precision => 38,\s+:scale => 0}, output else - assert_match %r{t.decimal\s+"atoms_in_universe",\s+:limit => 55,\s+:precision => 55,\s+:scale => 0}, output + assert_match %r{t.decimal\s+"atoms_in_universe",\s+:precision => 55,\s+:scale => 0}, output end end diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb index a1932ad16a..bec4291457 100644 --- a/activerecord/test/schema/schema.rb +++ b/activerecord/test/schema/schema.rb @@ -394,10 +394,6 @@ ActiveRecord::Schema.define do t.integer :price end - create_table :primary_key_limit, :force => true, :id => false do |t| - t.primary_key :id, :limit => 8 - end - create_table :projects, :force => true do |t| t.string :name t.string :type -- cgit v1.2.3