cached_resource 8.0.0 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,235 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "CachedResource::Configuration" do
4
-
5
- let(:configuration) { CachedResource::Configuration.new }
6
- let(:default_logger) { defined?(ActiveSupport::Logger) ? ActiveSupport::Logger : ActiveSupport::BufferedLogger }
7
-
8
- describe "by default" do
9
- it "should be enabled" do
10
- configuration.enabled.should == true
11
- end
12
-
13
- it "should have a cache expiry of 1 week" do
14
- configuration.ttl.should == 604800
15
- end
16
-
17
- it "should disable collection synchronization" do
18
- configuration.collection_synchronize.should == false
19
- end
20
-
21
- it "should default to :all for collection arguments" do
22
- configuration.collection_arguments.should == [:all]
23
- end
24
-
25
- it "should cache collections" do
26
- configuration.cache_collections == true
27
- end
28
-
29
- describe "outside a Rails environment" do
30
- it "should be logging to a buffered logger attached to a NilIO" do
31
- configuration.logger.class.should == default_logger
32
- # ActiveSupport switched around the log destination variables
33
- # Check if either are what we expect to be compatible
34
- old_as = configuration.logger.instance_variable_get(:@log).class == NilIO
35
- new_as = configuration.logger.instance_variable_get(:@log_dest).class == NilIO
36
- newer_as = configuration.logger.instance_variable_get(:@logdev).instance_variable_get(:@dev).class == NilIO
37
- (old_as || new_as || newer_as).should == true
38
- end
39
-
40
- it "should cache responses in a memory store" do
41
- configuration.cache.class.should == ActiveSupport::Cache::MemoryStore
42
- end
43
- end
44
-
45
- describe "inside a Rails environment" do
46
- before(:each) do
47
- Rails = OpenStruct.new(:logger => "logger", :cache => "cache")
48
- load "cached_resource/configuration.rb"
49
- end
50
-
51
- after(:each) do
52
- # remove the rails constant and unbind the
53
- # cache and logger from the configuration
54
- # defaults
55
- Object.send(:remove_const, :Rails)
56
- load "cached_resource/configuration.rb"
57
- end
58
-
59
- it "should be logging to the rails logger" do
60
- configuration.logger.should == "logger"
61
- end
62
-
63
- it "should cache responses in a memory store" do
64
- configuration.cache.should == "cache"
65
- end
66
- end
67
- end
68
-
69
- describe "when initialized through cached resource" do
70
- before(:each) do
71
- class Foo < ActiveResource::Base
72
- cached_resource :ttl => 1,
73
- :race_condition_ttl => 5,
74
- :cache => "cache",
75
- :logger => "logger",
76
- :enabled => false,
77
- :collection_synchronize => true,
78
- :collection_arguments => [:every],
79
- :custom => "irrelevant",
80
- :cache_collections => true
81
- end
82
- end
83
-
84
- after(:each) do
85
- Object.send(:remove_const, :Foo)
86
- end
87
-
88
- it "should relfect the specified options" do
89
- cr = Foo.cached_resource
90
- cr.ttl.should == 1
91
- expect(cr.race_condition_ttl).to eq(5)
92
- cr.cache.should == "cache"
93
- cr.logger.should == "logger"
94
- cr.enabled.should == false
95
- cr.collection_synchronize.should == true
96
- cr.collection_arguments.should == [:every]
97
- cr.custom.should == "irrelevant"
98
- cr.cache_collections.should == true
99
- end
100
- end
101
-
102
- # re-evaluate
103
- describe "when multiple are initialized through cached resource" do
104
- before(:each) do
105
- class Foo < ActiveResource::Base
106
- cached_resource
107
- end
108
-
109
- class Bar < ActiveResource::Base
110
- cached_resource
111
- end
112
- end
113
-
114
- after(:each) do
115
- Object.send(:remove_const, :Foo)
116
- Object.send(:remove_const, :Bar)
117
- end
118
-
119
- it "they should have different configuration objects" do
120
- Foo.cached_resource.object_id.should_not == Bar.cached_resource.object_id
121
- end
122
-
123
- it "they should have the same attributes" do
124
- Foo.cached_resource.instance_variable_get(:@table).should == Bar.cached_resource.instance_variable_get(:@table)
125
- end
126
-
127
- end
128
-
129
- describe "when cached resource is inherited" do
130
- before(:each) do
131
- class Bar < ActiveResource::Base
132
- cached_resource :ttl => 1,
133
- :race_condition_ttl => 5,
134
- :cache => "cache",
135
- :logger => "logger",
136
- :enabled => false,
137
- :collection_synchronize => true,
138
- :collection_arguments => [:every],
139
- :custom => "irrelevant",
140
- :cache_collections => true
141
- end
142
-
143
- class Foo < Bar
144
- end
145
- end
146
-
147
- after(:each) do
148
- Object.send(:remove_const, :Foo)
149
- Object.send(:remove_const, :Bar)
150
- end
151
-
152
- it "it should make sure each subclass has the same configuration" do
153
- Bar.cached_resource.object_id.should == Foo.cached_resource.object_id
154
- end
155
-
156
- end
157
-
158
- describe "when cached resource is inherited and then overriden" do
159
- before(:each) do
160
- class Bar < ActiveResource::Base
161
- cached_resource :ttl => 1,
162
- :race_condition_ttl => 5,
163
- :cache => "cache",
164
- :logger => "logger",
165
- :enabled => false,
166
- :collection_synchronize => true,
167
- :collection_arguments => [:every],
168
- :custom => "irrelevant",
169
- :cache_collections => true
170
- end
171
-
172
- class Foo < Bar
173
- # override the superclasses configuration
174
- self.cached_resource = CachedResource::Configuration.new(:ttl => 60)
175
- end
176
- end
177
-
178
- after(:each) do
179
- Object.send(:remove_const, :Foo)
180
- Object.send(:remove_const, :Bar)
181
- end
182
-
183
- it "should have the specified options" do
184
- Foo.cached_resource.ttl.should == 60
185
- end
186
-
187
- it "should have the default options for anything unspecified" do
188
- cr = Foo.cached_resource
189
- cr.cache.class.should == ActiveSupport::Cache::MemoryStore
190
- cr.logger.class.should == default_logger
191
- cr.enabled.should == true
192
- cr.collection_synchronize.should == false
193
- cr.collection_arguments.should == [:all]
194
- cr.custom.should == nil
195
- cr.ttl_randomization.should == false
196
- cr.ttl_randomization_scale.should == (1..2)
197
- cr.cache_collections.should == true
198
- expect(cr.race_condition_ttl).to eq(86400)
199
- end
200
-
201
- end
202
-
203
- # At the moment, not too keen on implementing some fancy
204
- # randomness validator.
205
- describe "when ttl randomization is enabled" do
206
- before(:each) do
207
- @ttl = 1
208
- configuration.ttl = @ttl
209
- configuration.ttl_randomization = true
210
- configuration.send(:sample_range, 1..2, @ttl)
211
- # next ttl: 1.72032449344216
212
- end
213
-
214
- it "it should produce a random ttl between ttl and ttl * 2" do
215
- generated_ttl = configuration.generate_ttl
216
- generated_ttl.should_not == 10
217
- (@ttl..(2 * @ttl)).should include(generated_ttl)
218
- end
219
-
220
- describe "when a ttl randomization scale is set" do
221
- before(:each) do
222
- @lower = 0.5
223
- @upper = 1
224
- configuration.ttl_randomization_scale = @lower..@upper
225
- # next ttl 0.860162246721079
226
- end
227
-
228
- it "should produce a random ttl between ttl * lower bound and ttl * upper bound" do
229
- lower = @ttl * @lower
230
- upper = @ttl * @upper
231
- (lower..upper).should include(configuration.generate_ttl)
232
- end
233
- end
234
- end
235
- end
data/spec/spec_helper.rb DELETED
@@ -1,13 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
3
- require 'active_resource'
4
- require 'active_support'
5
- require 'active_support/time'
6
-
7
- $:.unshift(File.dirname(__FILE__) + '/../lib')
8
- require 'cached_resource'
9
-
10
- RSpec.configure do |config|
11
- # nada
12
- end
13
-