Updated README.rdoc again
[feedcatcher.git] / vendor / rails / activerecord / test / cases / query_cache_test.rb
1 require "cases/helper"
2 require 'models/topic'
3 require 'models/reply'
4 require 'models/task'
5 require 'models/course'
6 require 'models/category'
7 require 'models/post'
8
9
10 class QueryCacheTest < ActiveRecord::TestCase
11 fixtures :tasks, :topics, :categories, :posts, :categories_posts
12
13 def test_find_queries
14 assert_queries(2) { Task.find(1); Task.find(1) }
15 end
16
17 def test_find_queries_with_cache
18 Task.cache do
19 assert_queries(1) { Task.find(1); Task.find(1) }
20 end
21 end
22
23 def test_count_queries_with_cache
24 Task.cache do
25 assert_queries(1) { Task.count; Task.count }
26 end
27 end
28
29 def test_query_cache_dups_results_correctly
30 Task.cache do
31 now = Time.now.utc
32 task = Task.find 1
33 assert_not_equal now, task.starting
34 task.starting = now
35 task.reload
36 assert_not_equal now, task.starting
37 end
38 end
39
40 def test_cache_is_flat
41 Task.cache do
42 Topic.columns # don't count this query
43 assert_queries(1) { Topic.find(1); Topic.find(1); }
44 end
45
46 ActiveRecord::Base.cache do
47 assert_queries(1) { Task.find(1); Task.find(1) }
48 end
49 end
50
51 def test_cache_does_not_wrap_string_results_in_arrays
52 Task.cache do
53 assert_instance_of String, Task.connection.select_value("SELECT count(*) AS count_all FROM tasks")
54 end
55 end
56 end
57
58 class QueryCacheExpiryTest < ActiveRecord::TestCase
59 fixtures :tasks, :posts, :categories, :categories_posts
60
61 def test_find
62 Task.connection.expects(:clear_query_cache).times(1)
63
64 assert !Task.connection.query_cache_enabled
65 Task.cache do
66 assert Task.connection.query_cache_enabled
67 Task.find(1)
68
69 Task.uncached do
70 assert !Task.connection.query_cache_enabled
71 Task.find(1)
72 end
73
74 assert Task.connection.query_cache_enabled
75 end
76 assert !Task.connection.query_cache_enabled
77 end
78
79 def test_update
80 Task.connection.expects(:clear_query_cache).times(2)
81
82 Task.cache do
83 task = Task.find(1)
84 task.starting = Time.now.utc
85 task.save!
86 end
87 end
88
89 def test_destroy
90 Task.connection.expects(:clear_query_cache).times(2)
91
92 Task.cache do
93 Task.find(1).destroy
94 end
95 end
96
97 def test_insert
98 ActiveRecord::Base.connection.expects(:clear_query_cache).times(2)
99
100 Task.cache do
101 Task.create!
102 end
103 end
104
105 def test_cache_is_expired_by_habtm_update
106 ActiveRecord::Base.connection.expects(:clear_query_cache).times(2)
107 ActiveRecord::Base.cache do
108 c = Category.find(:first)
109 p = Post.find(:first)
110 p.categories << c
111 end
112 end
113
114 def test_cache_is_expired_by_habtm_delete
115 ActiveRecord::Base.connection.expects(:clear_query_cache).times(2)
116 ActiveRecord::Base.cache do
117 c = Category.find(1)
118 p = Post.find(1)
119 assert p.categories.any?
120 p.categories.delete_all
121 end
122 end
123 end