aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/query_cache_test.rb
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2008-01-18 07:30:42 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2008-01-18 07:30:42 +0000
commit42b39ae3f2991692672364d7e09b1e4002e66261 (patch)
treecddaf1eb2dbf7be27430bde882432db3b1cc0407 /activerecord/test/cases/query_cache_test.rb
parent105a27f39ee9dbfd7fdb2b25e5ba38b00708b66c (diff)
downloadrails-42b39ae3f2991692672364d7e09b1e4002e66261.tar.gz
rails-42b39ae3f2991692672364d7e09b1e4002e66261.tar.bz2
rails-42b39ae3f2991692672364d7e09b1e4002e66261.zip
Move tests to cases
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8660 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test/cases/query_cache_test.rb')
-rw-r--r--activerecord/test/cases/query_cache_test.rb124
1 files changed, 124 insertions, 0 deletions
diff --git a/activerecord/test/cases/query_cache_test.rb b/activerecord/test/cases/query_cache_test.rb
new file mode 100644
index 0000000000..242223161c
--- /dev/null
+++ b/activerecord/test/cases/query_cache_test.rb
@@ -0,0 +1,124 @@
+require 'abstract_unit'
+require 'fixtures/topic'
+require 'fixtures/reply'
+require 'fixtures/task'
+require 'fixtures/course'
+require 'fixtures/category'
+require 'fixtures/post'
+
+
+class QueryCacheTest < ActiveSupport::TestCase
+ fixtures :tasks, :topics, :categories, :posts, :categories_posts
+
+ def test_find_queries
+ 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) }
+ end
+ end
+
+ def test_count_queries_with_cache
+ Task.cache do
+ assert_queries(1) { Task.count; Task.count }
+ end
+ end
+
+ def test_query_cache_dups_results_correctly
+ Task.cache do
+ now = Time.now.utc
+ task = Task.find 1
+ assert_not_equal now, task.starting
+ task.starting = now
+ task.reload
+ assert_not_equal now, task.starting
+ end
+ end
+
+ def test_cache_is_flat
+ Task.cache do
+ Topic.columns # don't count this query
+ assert_queries(1) { Topic.find(1); Topic.find(1); }
+ end
+
+ ActiveRecord::Base.cache do
+ assert_queries(1) { Task.find(1); Task.find(1) }
+ 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
+
+class QueryCacheExpiryTest < ActiveSupport::TestCase
+ fixtures :tasks
+
+ def test_find
+ 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_update
+ Task.connection.expects(:clear_query_cache).times(2)
+
+ Task.cache do
+ Task.find(1).save!
+ end
+ end
+
+ def test_destroy
+ Task.connection.expects(:clear_query_cache).times(2)
+
+ Task.cache do
+ Task.find(1).destroy
+ end
+ end
+
+ def test_insert
+ ActiveRecord::Base.connection.expects(:clear_query_cache).times(2)
+
+ Task.cache do
+ Task.create!
+ end
+ end
+
+ def test_cache_is_expired_by_habtm_update
+ ActiveRecord::Base.connection.expects(:clear_query_cache).times(2)
+ ActiveRecord::Base.cache do
+ c = Category.find(:first)
+ p = Post.find(:first)
+ p.categories << c
+ end
+ end
+
+ def test_cache_is_expired_by_habtm_delete
+ ActiveRecord::Base.connection.expects(:clear_query_cache).times(2)
+ ActiveRecord::Base.cache do
+ c = Category.find(:first)
+ p = Post.find(:first)
+ p.categories.delete_all
+ end
+ end
+end
+
+end