diff options
author | Shane Hender <henders@gmail.com> | 2015-04-24 13:29:33 +0100 |
---|---|---|
committer | Shane Hender <henders@gmail.com> | 2015-04-28 18:00:09 +0100 |
commit | 95bdb95ad5e311a215535056851682840f96c1b7 (patch) | |
tree | 238d36986ada82fb7081b4f69da4134a2bb38010 /activerecord/test | |
parent | b29d794b8cdf59896e668a0f68038dd25228398e (diff) | |
download | rails-95bdb95ad5e311a215535056851682840f96c1b7.tar.gz rails-95bdb95ad5e311a215535056851682840f96c1b7.tar.bz2 rails-95bdb95ad5e311a215535056851682840f96c1b7.zip |
Cause ActiveRecord::Base::reload to also ignore the QueryCache.
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/persistence_test.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/activerecord/test/cases/persistence_test.rb b/activerecord/test/cases/persistence_test.rb index 1e93e2a05c..42e7507631 100644 --- a/activerecord/test/cases/persistence_test.rb +++ b/activerecord/test/cases/persistence_test.rb @@ -897,6 +897,33 @@ class PersistenceTest < ActiveRecord::TestCase assert_not post.new_record? end + def test_reload_via_querycache + ActiveRecord::Base.connection.enable_query_cache! + ActiveRecord::Base.connection.clear_query_cache + assert ActiveRecord::Base.connection.query_cache_enabled, 'cache should be on' + parrot = Parrot.create(:name => 'Shane') + + # populate the cache with the SELECT result + found_parrot = Parrot.find(parrot.id) + assert_equal parrot.id, found_parrot.id + + # Manually update the 'name' attribute in the DB directly + assert_equal 1, ActiveRecord::Base.connection.query_cache.length + ActiveRecord::Base.uncached do + found_parrot.name = 'Mary' + found_parrot.save + end + + # Now reload, and verify that it gets the DB version, and not the querycache version + found_parrot.reload + assert_equal 'Mary', found_parrot.name + + found_parrot = Parrot.find(parrot.id) + assert_equal 'Mary', found_parrot.name + ensure + ActiveRecord::Base.connection.disable_query_cache! + end + class SaveTest < ActiveRecord::TestCase self.use_transactional_tests = false |