diff options
author | Jon Leighton <j@jonathanleighton.com> | 2011-06-12 18:09:09 +0100 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2011-06-12 18:19:21 +0100 |
commit | 14e6bbb149a7045d73d34deed2c8ef4a47e4233f (patch) | |
tree | 807d803443c6c7778f63b3bd720f477d3917542a /activerecord/test/cases/associations | |
parent | de01a6410207efd9554e9d1ed901c180e54d632a (diff) | |
download | rails-14e6bbb149a7045d73d34deed2c8ef4a47e4233f.tar.gz rails-14e6bbb149a7045d73d34deed2c8ef4a47e4233f.tar.bz2 rails-14e6bbb149a7045d73d34deed2c8ef4a47e4233f.zip |
Refactor tests to be less brittle
Diffstat (limited to 'activerecord/test/cases/associations')
-rw-r--r-- | activerecord/test/cases/associations/has_many_associations_test.rb | 83 |
1 files changed, 58 insertions, 25 deletions
diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb index 79b56d81df..e16a573a1f 100644 --- a/activerecord/test/cases/associations/has_many_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_associations_test.rb @@ -538,15 +538,27 @@ class HasManyAssociationsTest < ActiveRecord::TestCase end def test_transactions_when_adding_to_persisted - force_signal37_to_load_all_clients_of_firm - Client.expects(:transaction) - companies(:first_firm).clients_of_firm.concat(Client.new("name" => "Natural Company")) + good = Client.new(:name => "Good") + bad = Client.new(:name => "Bad", :raise_on_save => true) + + begin + companies(:first_firm).clients_of_firm.concat(good, bad) + rescue Client::RaisedOnSave + end + + assert !companies(:first_firm).clients_of_firm(true).include?(good) end def test_transactions_when_adding_to_new_record - Client.expects(:transaction).never - firm = Firm.new - firm.clients_of_firm.concat(Client.new("name" => "Natural Company")) + prev_ignored_sql = ActiveRecord::SQLCounter.ignored_sql + ActiveRecord::SQLCounter.ignored_sql = [] + + assert_no_queries do + firm = Firm.new + firm.clients_of_firm.concat(Client.new("name" => "Natural Company")) + end + ensure + ActiveRecord::SQLCounter.ignored_sql = prev_ignored_sql end def test_new_aliased_to_build @@ -791,18 +803,31 @@ class HasManyAssociationsTest < ActiveRecord::TestCase end def test_transaction_when_deleting_persisted - force_signal37_to_load_all_clients_of_firm - client = companies(:first_firm).clients_of_firm.create("name" => "Another Client") - Client.expects(:transaction) - companies(:first_firm).clients_of_firm.delete(client) + good = Client.new(:name => "Good") + bad = Client.new(:name => "Bad", :raise_on_destroy => true) + + companies(:first_firm).clients_of_firm = [good, bad] + + begin + companies(:first_firm).clients_of_firm.destroy(good, bad) + rescue Client::RaisedOnDestroy + end + + assert_equal [good, bad], companies(:first_firm).clients_of_firm(true) end def test_transaction_when_deleting_new_record - client = Client.new("name" => "New Client") - firm = Firm.new - firm.clients_of_firm << client - Client.expects(:transaction).never - firm.clients_of_firm.delete(client) + prev_ignored_sql = ActiveRecord::SQLCounter.ignored_sql + ActiveRecord::SQLCounter.ignored_sql = [] + + assert_no_queries do + firm = Firm.new + client = Client.new("name" => "New Client") + firm.clients_of_firm << client + firm.clients_of_firm.destroy(client) + end + ensure + ActiveRecord::SQLCounter.ignored_sql = prev_ignored_sql end def test_clearing_an_association_collection @@ -1139,21 +1164,29 @@ class HasManyAssociationsTest < ActiveRecord::TestCase end def test_transactions_when_replacing_on_persisted - firm = Firm.find(:first, :order => "id") - firm.clients = [companies(:first_client)] - assert firm.save, "Could not save firm" - firm.reload + good = Client.new(:name => "Good") + bad = Client.new(:name => "Bad", :raise_on_save => true) - Client.expects(:transaction) - firm.clients_of_firm = [Client.new("name" => "Natural Company")] + companies(:first_firm).clients_of_firm = [good] + + begin + companies(:first_firm).clients_of_firm = [bad] + rescue Client::RaisedOnSave + end + + assert_equal [good], companies(:first_firm).clients_of_firm(true) end def test_transactions_when_replacing_on_new_record - firm = Firm.new - firm.clients_of_firm << Client.new("name" => "Natural Company") + prev_ignored_sql = ActiveRecord::SQLCounter.ignored_sql + ActiveRecord::SQLCounter.ignored_sql = [] - Client.expects(:transaction).never - firm.clients_of_firm = [Client.new("name" => "New Client")] + assert_no_queries do + firm = Firm.new + firm.clients_of_firm = [Client.new("name" => "New Client")] + end + ensure + ActiveRecord::SQLCounter.ignored_sql = prev_ignored_sql end def test_get_ids |