aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/query_cache_test.rb
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2007-09-17 06:15:58 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2007-09-17 06:15:58 +0000
commitbfb906a905a1e8774e438b10e8cf703a829b55dc (patch)
treea24612f8ed74de3dec4519649488b817839f7dd5 /activerecord/test/query_cache_test.rb
parent30fb7b8c8bfc72ed3097352539544c07cbb38d0d (diff)
downloadrails-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/query_cache_test.rb')
-rw-r--r--activerecord/test/query_cache_test.rb96
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