diff options
author | Jason Dew <jason.dew@gmail.com> | 2008-06-27 12:25:26 -0400 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2008-07-14 02:24:12 +0100 |
commit | c6f397c5cecf183680c191dd2128c0a96c5b9399 (patch) | |
tree | 574b28103b2f9cb416cb7be9304f1a3f2adfc0d7 /activerecord/test/cases/associations | |
parent | d72c66532f959846cdc2d7fb1dc1ef6ba87bdcb1 (diff) | |
download | rails-c6f397c5cecf183680c191dd2128c0a96c5b9399.tar.gz rails-c6f397c5cecf183680c191dd2128c0a96c5b9399.tar.bz2 rails-c6f397c5cecf183680c191dd2128c0a96c5b9399.zip |
Add block syntax to HasManyAssociation#build. [#502 state:resolve]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
Diffstat (limited to 'activerecord/test/cases/associations')
-rw-r--r-- | activerecord/test/cases/associations/has_many_associations_test.rb | 31 |
1 files changed, 31 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 e90edbb213..b9c7ec6377 100644 --- a/activerecord/test/cases/associations/has_many_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_associations_test.rb @@ -425,6 +425,37 @@ class HasManyAssociationsTest < ActiveRecord::TestCase assert_equal 2, first_topic.replies.to_ary.size end + def test_build_via_block + company = companies(:first_firm) + new_client = assert_no_queries { company.clients_of_firm.build {|client| client.name = "Another Client" } } + assert !company.clients_of_firm.loaded? + + assert_equal "Another Client", new_client.name + assert new_client.new_record? + assert_equal new_client, company.clients_of_firm.last + company.name += '-changed' + assert_queries(2) { assert company.save } + assert !new_client.new_record? + assert_equal 2, company.clients_of_firm(true).size + end + + def test_build_many_via_block + company = companies(:first_firm) + new_clients = assert_no_queries do + company.clients_of_firm.build([{"name" => "Another Client"}, {"name" => "Another Client II"}]) do |client| + client.name = "changed" + end + end + + assert_equal 2, new_clients.size + assert_equal "changed", new_clients.first.name + assert_equal "changed", new_clients.last.name + + company.name += '-changed' + assert_queries(3) { assert company.save } + assert_equal 3, company.clients_of_firm(true).size + end + def test_create_without_loading_association first_firm = companies(:first_firm) Firm.column_names |