Skip to content

Commit a15832b

Browse files
committed
Refactor ActiveRecord connection handling in tests
In some versions I was getting deprecation message. In others I was getting no arguments allowed. In still others it just worked. Hopefully this gets all versions working. Updated tests in `active_record_spec.rb` to use helper methods for checking active connections and clearing them. This improves readability and maintainability of the test code while ensuring that ActiveRecord connections are properly managed during feature operations.
1 parent cc71d42 commit a15832b

File tree

1 file changed

+45
-35
lines changed

1 file changed

+45
-35
lines changed

spec/flipper/adapters/active_record_spec.rb

Lines changed: 45 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -94,78 +94,78 @@
9494

9595
context "ActiveRecord connection_pool" do
9696
before do
97-
ActiveRecord::Base.connection_handler.clear_active_connections!(:all)
97+
clear_active_connections!
9898
end
9999

100100
context "#features" do
101101
it "does not hold onto connections" do
102-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
102+
expect(active_connections?).to be(false)
103103
subject.features
104-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
104+
expect(active_connections?).to be(false)
105105
end
106106

107107
it "does not release previously held connection" do
108108
ActiveRecord::Base.connection # establish a new connection
109-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
109+
expect(active_connections?).to be(true)
110110
subject.features
111-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
111+
expect(active_connections?).to be(true)
112112
end
113113
end
114114

115115
context "#get_all" do
116116
it "does not hold onto connections" do
117-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
117+
expect(active_connections?).to be(false)
118118
subject.get_all
119-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
119+
expect(active_connections?).to be(false)
120120
end
121121

122122
it "does not release previously held connection" do
123123
ActiveRecord::Base.connection # establish a new connection
124-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
124+
expect(active_connections?).to be(true)
125125
subject.get_all
126-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
126+
expect(active_connections?).to be(true)
127127
end
128128
end
129129

130130
context "#add / #remove / #clear" do
131131
let(:feature) { Flipper::Feature.new(:search, subject) }
132132

133133
it "does not hold onto connections" do
134-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
134+
expect(active_connections?).to be(false)
135135
subject.add(feature)
136-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
136+
expect(active_connections?).to be(false)
137137
subject.remove(feature)
138-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
138+
expect(active_connections?).to be(false)
139139
subject.clear(feature)
140-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
140+
expect(active_connections?).to be(false)
141141
end
142142

143143
it "does not release previously held connection" do
144144
ActiveRecord::Base.connection # establish a new connection
145-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
145+
expect(active_connections?).to be(true)
146146
subject.add(feature)
147-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
147+
expect(active_connections?).to be(true)
148148
subject.remove(feature)
149-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
149+
expect(active_connections?).to be(true)
150150
subject.clear(feature)
151-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
151+
expect(active_connections?).to be(true)
152152
end
153153
end
154154

155155
context "#get_multi" do
156156
let(:feature) { Flipper::Feature.new(:search, subject) }
157157

158158
it "does not hold onto connections" do
159-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
159+
expect(active_connections?).to be(false)
160160
subject.get_multi([feature])
161-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
161+
expect(active_connections?).to be(false)
162162
end
163163

164164
it "does not release previously held connection" do
165165
ActiveRecord::Base.connection # establish a new connection
166-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
166+
expect(active_connections?).to be(true)
167167
subject.get_multi([feature])
168-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
168+
expect(active_connections?).to be(true)
169169
end
170170
end
171171

@@ -174,20 +174,20 @@
174174
let(:gate) { feature.gate(:boolean)}
175175

176176
it "does not hold onto connections" do
177-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
177+
expect(active_connections?).to be(false)
178178
subject.enable(feature, gate, gate.wrap(true))
179-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
179+
expect(active_connections?).to be(false)
180180
subject.disable(feature, gate, gate.wrap(false))
181-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
181+
expect(active_connections?).to be(false)
182182
end
183183

184184
it "does not release previously held connection" do
185185
ActiveRecord::Base.connection # establish a new connection
186-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
186+
expect(active_connections?).to be(true)
187187
subject.enable(feature, gate, gate.wrap(true))
188-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
188+
expect(active_connections?).to be(true)
189189
subject.disable(feature, gate, gate.wrap(false))
190-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
190+
expect(active_connections?).to be(true)
191191
end
192192
end
193193

@@ -196,20 +196,20 @@
196196
let(:gate) { feature.gate(:group) }
197197

198198
it "does not hold onto connections" do
199-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
199+
expect(active_connections?).to be(false)
200200
subject.enable(feature, gate, gate.wrap(:admin))
201-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
201+
expect(active_connections?).to be(false)
202202
subject.disable(feature, gate, gate.wrap(:admin))
203-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
203+
expect(active_connections?).to be(false)
204204
end
205205

206206
it "does not release previously held connection" do
207207
ActiveRecord::Base.connection # establish a new connection
208-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
208+
expect(active_connections?).to be(true)
209209
subject.enable(feature, gate, gate.wrap(:admin))
210-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
210+
expect(active_connections?).to be(true)
211211
subject.disable(feature, gate, gate.wrap(:admin))
212-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
212+
expect(active_connections?).to be(true)
213213
end
214214
end
215215
end
@@ -300,14 +300,14 @@
300300
end
301301

302302
it 'does not hold onto connections during write operations' do
303-
ActiveRecord::Base.connection_handler.clear_active_connections!(:all)
303+
clear_active_connections!
304304

305305
abstract_class.connected_to(role: :reading) do
306306
flipper = Flipper.new(adapter_with_roles)
307307
feature = flipper[:connection_test]
308308

309309
feature.enable
310-
expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
310+
expect(active_connections?).to be(false)
311311
end
312312
end
313313
end
@@ -363,4 +363,14 @@
363363
end
364364
end
365365
end
366+
367+
def active_connections?
368+
method = ActiveRecord::Base.connection_handler.method(:active_connections?)
369+
method.arity == 0 ? method.call : method.call(:all)
370+
end
371+
372+
def clear_active_connections!
373+
method = ActiveRecord::Base.connection_handler.method(:clear_active_connections!)
374+
method.arity == 0 ? method.call : method.call(:all)
375+
end
366376
end

0 commit comments

Comments
 (0)