aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/associations
diff options
context:
space:
mode:
authorBogdan Gusiev <agresso@gmail.com>2019-02-06 16:28:48 +0200
committerBogdan Gusiev <agresso@gmail.com>2019-02-08 11:39:53 +0200
commit7f153e936af6ae2ac1809e5758000aaf003a1f62 (patch)
tree24ebebc8a285affcce0054cf3072022f3ad4c090 /activerecord/test/cases/associations
parent44232b485485634d681c60868c619323f882e59f (diff)
downloadrails-7f153e936af6ae2ac1809e5758000aaf003a1f62.tar.gz
rails-7f153e936af6ae2ac1809e5758000aaf003a1f62.tar.bz2
rails-7f153e936af6ae2ac1809e5758000aaf003a1f62.zip
Bugfix has_many association #size when ids reader is cached and association is changed
Diffstat (limited to 'activerecord/test/cases/associations')
-rw-r--r--activerecord/test/cases/associations/has_many_associations_test.rb15
1 files changed, 15 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 4c9e4d0ad2..130cb08b0d 100644
--- a/activerecord/test/cases/associations/has_many_associations_test.rb
+++ b/activerecord/test/cases/associations/has_many_associations_test.rb
@@ -2003,6 +2003,21 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
assert_not_predicate company.clients, :loaded?
end
+ def test_ids_reader_cache_not_used_for_size_when_association_is_dirty
+ firm = Firm.create!(name: "Startup")
+ assert_equal 0, firm.client_ids.size
+ firm.clients.build
+ assert_equal 1, firm.clients.size
+ end
+
+ def test_ids_reader_cache_should_be_cleared_when_collection_is_deleted
+ firm = companies(:first_firm)
+ assert_equal [2, 3, 11], firm.client_ids
+ client = firm.clients.first
+ firm.clients.delete(client)
+ assert_equal [3, 11], firm.client_ids
+ end
+
def test_zero_counter_cache_usage_on_unloaded_association
car = Car.create!(name: "My AppliCar")
assert_no_queries do