17
17
require "models/subscriber"
18
18
require "models/subscription"
19
19
require "models/book"
20
+ require "models/cpk"
20
21
require "active_support/core_ext/enumerable"
21
22
22
23
class CounterCacheTest < ActiveRecord ::TestCase
23
- fixtures :topics , :categories , :categorizations , :cars , :dogs , :dog_lovers , :people , :friendships , :subscribers , :subscriptions , :books
24
+ fixtures :topics , :categories , :categorizations , :cars , :dogs , :dog_lovers , :people , :friendships , :subscribers , :subscriptions , :books ,
25
+ :cpk_orders , :cpk_books
24
26
25
27
class ::SpecialTopic < ::Topic
26
28
has_many :special_replies , foreign_key : "parent_id"
@@ -42,11 +44,25 @@ class ::SpecialReply < ::Reply
42
44
end
43
45
44
46
test "increment counter by specific amount" do
45
- assert_difference " @topic.reload.replies_count" , +2 do
47
+ assert_difference -> { @topic . reload . replies_count } , +2 do
46
48
Topic . increment_counter ( :replies_count , @topic . id , by : 2 )
47
49
end
48
50
end
49
51
52
+ test "increment counter for cpk model" do
53
+ order = Cpk ::Order . first
54
+ assert_difference -> { order . reload . books_count } do
55
+ Cpk ::Order . increment_counter ( :books_count , order . id )
56
+ end
57
+ end
58
+
59
+ test "increment counter for multiple cpk model records" do
60
+ order1 , order2 = Cpk ::Order . first ( 2 )
61
+ assert_difference [ -> { order1 . reload . books_count } , -> { order2 . reload . books_count } ] do
62
+ Cpk ::Order . increment_counter ( :books_count , [ order1 . id , order2 . id ] )
63
+ end
64
+ end
65
+
50
66
test "decrement counter" do
51
67
assert_difference "@topic.reload.replies_count" , -1 do
52
68
Topic . decrement_counter ( :replies_count , @topic . id )
@@ -59,6 +75,13 @@ class ::SpecialReply < ::Reply
59
75
end
60
76
end
61
77
78
+ test "decrement counter for cpk model" do
79
+ order = Cpk ::Order . first
80
+ assert_difference -> { order . reload . books_count } , -1 do
81
+ Cpk ::Order . decrement_counter ( :books_count , order . id )
82
+ end
83
+ end
84
+
62
85
test "reset counters" do
63
86
# throw the count off by 1
64
87
Topic . increment_counter ( :replies_count , @topic . id )
@@ -148,6 +171,17 @@ class ::SpecialReply < ::Reply
148
171
end
149
172
end
150
173
174
+ test "reset counters for cpk model" do
175
+ order = Cpk ::Order . first
176
+ # throw the count off by 1
177
+ Cpk ::Order . increment_counter ( :books_count , order . id )
178
+
179
+ # check that it gets reset
180
+ assert_difference -> { order . reload . books_count } , -1 do
181
+ Cpk ::Order . reset_counters ( order . id , :books )
182
+ end
183
+ end
184
+
151
185
test "update counter with initial null value" do
152
186
category = categories ( :general )
153
187
assert_equal 2 , category . categorizations . count
@@ -177,6 +211,13 @@ class ::SpecialReply < ::Reply
177
211
end
178
212
end
179
213
214
+ test "update counter for decrement for cpk model" do
215
+ order = Cpk ::Order . first
216
+ assert_difference -> { order . reload . books_count } , -3 do
217
+ Cpk ::Order . update_counters ( order . id , books_count : -3 )
218
+ end
219
+ end
220
+
180
221
test "update other counters on parent destroy" do
181
222
david , joanna = dog_lovers ( :david , :joanna )
182
223
_ = joanna # squelch a warning
0 commit comments