Froze rails gems
[depot.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 uses_mocha 'QueryCacheExpiryTest' do
59
60 class QueryCacheExpiryTest < ActiveRecord::TestCase
61 fixtures :tasks, :posts, :categories, :categories_posts
62
63 def test_find
64 Task.connection.expects(:clear_query_cache).times(1)
65
66 assert !Task.connection.query_cache_enabled
67 Task.cache do
68 assert Task.connection.query_cache_enabled
69 Task.find(1)
70
71 Task.uncached do
72 assert !Task.connection.query_cache_enabled
73 Task.find(1)
74 end
75
76 assert Task.connection.query_cache_enabled
77 end
78 assert !Task.connection.query_cache_enabled
79 end
80
81 def test_update
82 Task.connection.expects(:clear_query_cache).times(2)
83
84 Task.cache do
85 task = Task.find(1)
86 task.starting = Time.now.utc
87 task.save!
88 end
89 end
90
91 def test_destroy
92 Task.connection.expects(:clear_query_cache).times(2)
93
94 Task.cache do
95 Task.find(1).destroy
96 end
97 end
98
99 def test_insert
100 ActiveRecord::Base.connection.expects(:clear_query_cache).times(2)
101
102 Task.cache do
103 Task.create!
104 end
105 end
106
107 def test_cache_is_expired_by_habtm_update
108 ActiveRecord::Base.connection.expects(:clear_query_cache).times(2)
109 ActiveRecord::Base.cache do
110 c = Category.find(:first)
111 p = Post.find(:first)
112 p.categories << c
113 end
114 end
115
116 def test_cache_is_expired_by_habtm_delete
117 ActiveRecord::Base.connection.expects(:clear_query_cache).times(2)
118 ActiveRecord::Base.cache do
119 c = Category.find(1)
120 p = Post.find(1)
121 assert p.categories.any?
122 p.categories.delete_all
123 end
124 end
125 end
126
127 end