diff options
author | Emilio Tagua <miloops@gmail.com> | 2009-05-18 11:18:46 -0300 |
---|---|---|
committer | Emilio Tagua <miloops@gmail.com> | 2009-05-18 11:18:46 -0300 |
commit | a04dedd5634cbb602cf48938cee0ff11c046b4c2 (patch) | |
tree | 66c51731cc283310362db57503d4952e0a0213bb /activerecord/test/cases/associations/has_many_associations_test.rb | |
parent | 0048897a417774f7e5a0c8c9e82fc8684f94ebc1 (diff) | |
parent | 27de7f150b57a18d4ccdd274f6f8b621b58108c6 (diff) | |
download | rails-a04dedd5634cbb602cf48938cee0ff11c046b4c2.tar.gz rails-a04dedd5634cbb602cf48938cee0ff11c046b4c2.tar.bz2 rails-a04dedd5634cbb602cf48938cee0ff11c046b4c2.zip |
Merge commit 'rails/master'
Conflicts:
activerecord/lib/active_record/base.rb
activerecord/lib/active_record/migration.rb
activerecord/test/cases/helper.rb
Diffstat (limited to 'activerecord/test/cases/associations/has_many_associations_test.rb')
-rw-r--r-- | activerecord/test/cases/associations/has_many_associations_test.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb index 5df74fcdcd..d99424f9cd 100644 --- a/activerecord/test/cases/associations/has_many_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_associations_test.rb @@ -1023,6 +1023,45 @@ class HasManyAssociationsTest < ActiveRecord::TestCase assert firm.clients.loaded? end + def test_calling_many_should_count_instead_of_loading_association + firm = companies(:first_firm) + assert_queries(1) do + firm.clients.many? # use count query + end + assert !firm.clients.loaded? + end + + def test_calling_many_on_loaded_association_should_not_use_query + firm = companies(:first_firm) + firm.clients.collect # force load + assert_no_queries { assert firm.clients.many? } + end + + def test_calling_many_should_defer_to_collection_if_using_a_block + firm = companies(:first_firm) + assert_queries(1) do + firm.clients.expects(:size).never + firm.clients.many? { true } + end + assert firm.clients.loaded? + end + + def test_calling_many_should_return_false_if_none_or_one + firm = companies(:another_firm) + assert !firm.clients_like_ms.many? + assert_equal 0, firm.clients_like_ms.size + + firm = companies(:first_firm) + assert !firm.limited_clients.many? + assert_equal 1, firm.limited_clients.size + end + + def test_calling_many_should_return_true_if_more_than_one + firm = companies(:first_firm) + assert firm.clients.many? + assert_equal 2, firm.clients.size + end + def test_joins_with_namespaced_model_should_use_correct_type old = ActiveRecord::Base.store_full_sti_class ActiveRecord::Base.store_full_sti_class = true |