diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2007-09-17 06:15:58 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2007-09-17 06:15:58 +0000 |
commit | bfb906a905a1e8774e438b10e8cf703a829b55dc (patch) | |
tree | a24612f8ed74de3dec4519649488b817839f7dd5 /activerecord/test | |
parent | 30fb7b8c8bfc72ed3097352539544c07cbb38d0d (diff) | |
download | rails-bfb906a905a1e8774e438b10e8cf703a829b55dc.tar.gz rails-bfb906a905a1e8774e438b10e8cf703a829b55dc.tar.bz2 rails-bfb906a905a1e8774e438b10e8cf703a829b55dc.zip |
Speed up and simplify query caching.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7498 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/query_cache_test.rb | 96 |
1 files changed, 39 insertions, 57 deletions
diff --git a/activerecord/test/query_cache_test.rb b/activerecord/test/query_cache_test.rb index d63df6141d..08a492153c 100644 --- a/activerecord/test/query_cache_test.rb +++ b/activerecord/test/query_cache_test.rb @@ -4,34 +4,26 @@ require 'fixtures/reply' require 'fixtures/task' require 'fixtures/course' -require 'active_record/query_cache' class QueryCacheTest < Test::Unit::TestCase - fixtures :tasks - + fixtures :tasks, :topics + def test_find_queries - assert_queries(2) { Task.find(1); Task.find(1) } + assert_queries(2) { Task.find(1); Task.find(1) } end def test_find_queries_with_cache Task.cache do - assert_queries(1) { Task.find(1); Task.find(1) } + assert_queries(1) { Task.find(1); Task.find(1) } end end def test_count_queries_with_cache Task.cache do - assert_queries(1) { Task.count; Task.count } + assert_queries(1) { Task.count; Task.count } end end - def test_query_cache_returned - assert_not_equal ActiveRecord::QueryCache, Task.connection.class - Task.cache do - assert_equal ActiveRecord::QueryCache, Task.connection.class - end - end - def test_query_cache_dups_results_correctly Task.cache do now = Time.now.utc @@ -43,78 +35,68 @@ class QueryCacheTest < Test::Unit::TestCase end end - def test_cache_is_scoped_on_actual_class_only + def test_cache_is_flat Task.cache do Topic.columns # don't count this query - assert_queries(2) { Topic.find(1); Topic.find(1); } + assert_queries(1) { Topic.find(1); Topic.find(1); } end - end - - def test_cache_is_scoped_on_all_descending_classes + ActiveRecord::Base.cache do - assert_queries(1) { Task.find(1); Task.find(1) } + assert_queries(1) { Task.find(1); Task.find(1) } end end - - def test_cache_does_not_blow_up_other_connections - assert_not_equal Course.connection.object_id, Task.connection.object_id, - "Connections should be different, Course connects to a different database" - - ActiveRecord::Base.cache do - assert_not_equal Course.connection.object_id, Task.connection.object_id, - "Connections should be different, Course connects to a different database" + + def test_cache_does_not_wrap_string_results_in_arrays + Task.cache do + assert_instance_of String, Task.connection.select_value("SELECT count(*) AS count_all FROM tasks") end end - - def test_cache_does_not_wrap_string_results_in_arrays - Task.cache do - assert_instance_of String, Task.connection.select_value("SELECT count(*) AS count_all FROM tasks") - end - end end -uses_mocha('QueryCacheExpiryTest') do +uses_mocha 'QueryCacheExpiryTest' do class QueryCacheExpiryTest < Test::Unit::TestCase fixtures :tasks def test_find - ActiveRecord::QueryCache.any_instance.expects(:clear_query_cache).times(0) - - Task.cache do + Task.connection.expects(:clear_query_cache).times(1) + + assert !Task.connection.query_cache_enabled + Task.cache do + assert Task.connection.query_cache_enabled Task.find(1) + + Task.uncached do + assert !Task.connection.query_cache_enabled + Task.find(1) + end + + assert Task.connection.query_cache_enabled end + assert !Task.connection.query_cache_enabled end - def test_save - ActiveRecord::QueryCache.any_instance.expects(:clear_query_cache).times(1) - - Task.cache do - Task.find(1).save + def test_update + Task.connection.expects(:clear_query_cache).times(2) + + Task.cache do + Task.find(1).save! end end def test_destroy - ActiveRecord::QueryCache.any_instance.expects(:clear_query_cache).at_least_once - - Task.cache do + Task.connection.expects(:clear_query_cache).times(2) + + Task.cache do Task.find(1).destroy end end - def test_create - ActiveRecord::QueryCache.any_instance.expects(:clear_query_cache).times(1) - - Task.cache do - Task.create! - end - end + def test_insert + ActiveRecord::Base.connection.expects(:clear_query_cache).times(2) - def test_new_save - ActiveRecord::QueryCache.any_instance.expects(:clear_query_cache).times(1) - - Task.cache do - Task.new.save + Task.cache do + Task.create! end end end |