flipper 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.rspec +1 -0
- data/Changelog.md +12 -0
- data/Gemfile +4 -7
- data/Guardfile +16 -4
- data/README.md +63 -34
- data/examples/basic.rb +1 -1
- data/examples/dsl.rb +10 -12
- data/examples/group.rb +10 -4
- data/examples/individual_actor.rb +9 -6
- data/examples/instrumentation.rb +39 -0
- data/examples/percentage_of_actors.rb +12 -9
- data/examples/percentage_of_random.rb +4 -2
- data/lib/flipper.rb +43 -10
- data/lib/flipper/adapter.rb +106 -21
- data/lib/flipper/adapters/memoized.rb +7 -0
- data/lib/flipper/adapters/memory.rb +10 -3
- data/lib/flipper/adapters/operation_logger.rb +7 -0
- data/lib/flipper/dsl.rb +73 -16
- data/lib/flipper/errors.rb +6 -0
- data/lib/flipper/feature.rb +117 -19
- data/lib/flipper/gate.rb +72 -4
- data/lib/flipper/gates/actor.rb +41 -12
- data/lib/flipper/gates/boolean.rb +21 -11
- data/lib/flipper/gates/group.rb +45 -12
- data/lib/flipper/gates/percentage_of_actors.rb +29 -10
- data/lib/flipper/gates/percentage_of_random.rb +22 -9
- data/lib/flipper/instrumentation/log_subscriber.rb +107 -0
- data/lib/flipper/instrumentation/metriks.rb +6 -0
- data/lib/flipper/instrumentation/metriks_subscriber.rb +92 -0
- data/lib/flipper/instrumenters/memory.rb +25 -0
- data/lib/flipper/instrumenters/noop.rb +9 -0
- data/lib/flipper/key.rb +23 -4
- data/lib/flipper/registry.rb +22 -6
- data/lib/flipper/spec/shared_adapter_specs.rb +59 -12
- data/lib/flipper/toggle.rb +19 -2
- data/lib/flipper/toggles/boolean.rb +36 -3
- data/lib/flipper/toggles/set.rb +9 -3
- data/lib/flipper/toggles/value.rb +9 -3
- data/lib/flipper/type.rb +1 -0
- data/lib/flipper/types/actor.rb +12 -14
- data/lib/flipper/types/percentage.rb +8 -2
- data/lib/flipper/version.rb +1 -1
- data/spec/flipper/adapter_spec.rb +163 -27
- data/spec/flipper/adapters/memoized_spec.rb +6 -6
- data/spec/flipper/dsl_spec.rb +51 -54
- data/spec/flipper/feature_spec.rb +179 -17
- data/spec/flipper/gate_spec.rb +47 -0
- data/spec/flipper/gates/actor_spec.rb +52 -0
- data/spec/flipper/gates/boolean_spec.rb +52 -0
- data/spec/flipper/gates/group_spec.rb +79 -0
- data/spec/flipper/gates/percentage_of_actors_spec.rb +98 -0
- data/spec/flipper/gates/percentage_of_random_spec.rb +54 -0
- data/spec/flipper/instrumentation/log_subscriber_spec.rb +104 -0
- data/spec/flipper/instrumentation/metriks_subscriber_spec.rb +69 -0
- data/spec/flipper/instrumenters/memory_spec.rb +26 -0
- data/spec/flipper/instrumenters/noop_spec.rb +22 -0
- data/spec/flipper/key_spec.rb +8 -2
- data/spec/flipper/registry_spec.rb +20 -2
- data/spec/flipper/toggle_spec.rb +22 -0
- data/spec/flipper/toggles/boolean_spec.rb +40 -0
- data/spec/flipper/toggles/set_spec.rb +35 -0
- data/spec/flipper/toggles/value_spec.rb +55 -0
- data/spec/flipper/types/actor_spec.rb +28 -33
- data/spec/flipper_spec.rb +16 -3
- data/spec/helper.rb +37 -3
- data/spec/integration_spec.rb +90 -83
- metadata +40 -4
data/spec/integration_spec.rb
CHANGED
@@ -5,17 +5,19 @@ require 'flipper/adapters/memory'
|
|
5
5
|
describe Flipper::Feature do
|
6
6
|
subject { described_class.new(:search, adapter) }
|
7
7
|
|
8
|
+
let(:actor_class) { Struct.new(:flipper_id) }
|
9
|
+
|
8
10
|
let(:source) { {} }
|
9
11
|
let(:adapter) { Flipper::Adapters::Memory.new(source) }
|
10
12
|
|
11
13
|
let(:admin_group) { Flipper.group(:admins) }
|
12
14
|
let(:dev_group) { Flipper.group(:devs) }
|
13
15
|
|
14
|
-
let(:admin_thing) { double 'Non Flipper Thing', :
|
15
|
-
let(:dev_thing) { double 'Non Flipper Thing', :
|
16
|
+
let(:admin_thing) { double 'Non Flipper Thing', :flipper_id => 1, :admin? => true, :dev? => false }
|
17
|
+
let(:dev_thing) { double 'Non Flipper Thing', :flipper_id => 10, :admin? => false, :dev? => true }
|
16
18
|
|
17
|
-
let(:pitt) {
|
18
|
-
let(:clooney) {
|
19
|
+
let(:pitt) { actor_class.new(1) }
|
20
|
+
let(:clooney) { actor_class.new(10) }
|
19
21
|
|
20
22
|
let(:five_percent_of_actors) { Flipper::Types::PercentageOfActors.new(5) }
|
21
23
|
let(:five_percent_of_random) { Flipper::Types::PercentageOfRandom.new(5) }
|
@@ -25,36 +27,18 @@ describe Flipper::Feature do
|
|
25
27
|
Flipper.register(:devs) { |thing| thing.dev? }
|
26
28
|
end
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
-
adapter.write key, true
|
31
|
-
end
|
32
|
-
|
33
|
-
def enable_group(group)
|
34
|
-
key = Flipper::Key.new(subject.name, Flipper::Gates::Group::Key)
|
35
|
-
name = group.respond_to?(:name) ? group.name : group
|
36
|
-
adapter.set_add key, name
|
37
|
-
end
|
38
|
-
|
39
|
-
def enable_actor(actor)
|
40
|
-
key = Flipper::Key.new(subject.name, Flipper::Gates::Actor::Key)
|
41
|
-
adapter.set_add key, actor.identifier
|
42
|
-
end
|
43
|
-
|
44
|
-
def enable_percentage_of_actors(percentage)
|
45
|
-
key = Flipper::Key.new(subject.name, Flipper::Gates::PercentageOfActors::Key)
|
46
|
-
adapter.write key, percentage.value
|
47
|
-
end
|
48
|
-
|
49
|
-
def enable_percentage_of_random(percentage)
|
50
|
-
key = Flipper::Key.new(subject.name, Flipper::Gates::PercentageOfRandom::Key)
|
51
|
-
adapter.write key, percentage.value
|
30
|
+
after do
|
31
|
+
Flipper.groups = nil
|
52
32
|
end
|
53
33
|
|
54
34
|
describe "#enable" do
|
55
35
|
context "with no arguments" do
|
56
36
|
before do
|
57
|
-
subject.enable
|
37
|
+
@result = subject.enable
|
38
|
+
end
|
39
|
+
|
40
|
+
it "returns true" do
|
41
|
+
@result.should be_true
|
58
42
|
end
|
59
43
|
|
60
44
|
it "enables feature for all" do
|
@@ -68,7 +52,11 @@ describe Flipper::Feature do
|
|
68
52
|
|
69
53
|
context "with a group" do
|
70
54
|
before do
|
71
|
-
subject.enable(admin_group)
|
55
|
+
@result = subject.enable(admin_group)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "returns true" do
|
59
|
+
@result.should be_true
|
72
60
|
end
|
73
61
|
|
74
62
|
it "enables feature for non flipper thing in group" do
|
@@ -98,7 +86,11 @@ describe Flipper::Feature do
|
|
98
86
|
|
99
87
|
context "with an actor" do
|
100
88
|
before do
|
101
|
-
subject.enable(pitt)
|
89
|
+
@result = subject.enable(pitt)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "returns true" do
|
93
|
+
@result.should be_true
|
102
94
|
end
|
103
95
|
|
104
96
|
it "enables feature for actor" do
|
@@ -116,11 +108,19 @@ describe Flipper::Feature do
|
|
116
108
|
|
117
109
|
context "with a percentage of actors" do
|
118
110
|
before do
|
119
|
-
subject.enable(five_percent_of_actors)
|
111
|
+
@result = subject.enable(five_percent_of_actors)
|
112
|
+
end
|
113
|
+
|
114
|
+
it "returns true" do
|
115
|
+
@result.should be_true
|
120
116
|
end
|
121
117
|
|
122
118
|
it "enables feature for actor within percentage" do
|
123
|
-
enabled = (1..100).select { |i|
|
119
|
+
enabled = (1..100).select { |i|
|
120
|
+
thing = actor_class.new(i)
|
121
|
+
subject.enabled?(thing)
|
122
|
+
}.size
|
123
|
+
|
124
124
|
enabled.should be_within(2).of(5)
|
125
125
|
end
|
126
126
|
|
@@ -133,7 +133,11 @@ describe Flipper::Feature do
|
|
133
133
|
before do
|
134
134
|
@gate = Flipper::Gates::PercentageOfRandom.new(subject)
|
135
135
|
Flipper::Gates::PercentageOfRandom.should_receive(:new).and_return(@gate)
|
136
|
-
subject.enable(five_percent_of_random)
|
136
|
+
@result = subject.enable(five_percent_of_random)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "returns true" do
|
140
|
+
@result.should be_true
|
137
141
|
end
|
138
142
|
|
139
143
|
it "enables feature for time within percentage" do
|
@@ -168,11 +172,15 @@ describe Flipper::Feature do
|
|
168
172
|
@gate = Flipper::Gates::PercentageOfRandom.new(subject)
|
169
173
|
@gate.stub(:rand => 0.04)
|
170
174
|
Flipper::Gates::PercentageOfRandom.should_receive(:new).and_return(@gate)
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
subject.disable
|
175
|
+
subject.enable admin_group
|
176
|
+
subject.enable pitt
|
177
|
+
subject.enable five_percent_of_actors
|
178
|
+
subject.enable five_percent_of_random
|
179
|
+
@result = subject.disable
|
180
|
+
end
|
181
|
+
|
182
|
+
it "returns true" do
|
183
|
+
@result.should be_true
|
176
184
|
end
|
177
185
|
|
178
186
|
it "disables feature" do
|
@@ -188,7 +196,11 @@ describe Flipper::Feature do
|
|
188
196
|
end
|
189
197
|
|
190
198
|
it "disables actor in percentage of actors" do
|
191
|
-
enabled = (1..100).select { |i|
|
199
|
+
enabled = (1..100).select { |i|
|
200
|
+
thing = actor_class.new(i)
|
201
|
+
subject.enabled?(thing)
|
202
|
+
}.size
|
203
|
+
|
192
204
|
enabled.should be(0)
|
193
205
|
end
|
194
206
|
|
@@ -203,9 +215,13 @@ describe Flipper::Feature do
|
|
203
215
|
|
204
216
|
context "with a group" do
|
205
217
|
before do
|
206
|
-
|
207
|
-
|
208
|
-
subject.disable(admin_group)
|
218
|
+
subject.enable dev_group
|
219
|
+
subject.enable admin_group
|
220
|
+
@result = subject.disable(admin_group)
|
221
|
+
end
|
222
|
+
|
223
|
+
it "returns true" do
|
224
|
+
@result.should be_true
|
209
225
|
end
|
210
226
|
|
211
227
|
it "disables the feature for non flipper thing in the group" do
|
@@ -231,9 +247,13 @@ describe Flipper::Feature do
|
|
231
247
|
|
232
248
|
context "with an actor" do
|
233
249
|
before do
|
234
|
-
|
235
|
-
|
236
|
-
subject.disable(pitt)
|
250
|
+
subject.enable pitt
|
251
|
+
subject.enable clooney
|
252
|
+
@result = subject.disable(pitt)
|
253
|
+
end
|
254
|
+
|
255
|
+
it "returns true" do
|
256
|
+
@result.should be_true
|
237
257
|
end
|
238
258
|
|
239
259
|
it "disables feature for actor" do
|
@@ -251,11 +271,19 @@ describe Flipper::Feature do
|
|
251
271
|
|
252
272
|
context "with a percentage of actors" do
|
253
273
|
before do
|
254
|
-
subject.disable(five_percent_of_actors)
|
274
|
+
@result = subject.disable(five_percent_of_actors)
|
275
|
+
end
|
276
|
+
|
277
|
+
it "returns true" do
|
278
|
+
@result.should be_true
|
255
279
|
end
|
256
280
|
|
257
281
|
it "disables feature" do
|
258
|
-
enabled = (1..100).select { |i|
|
282
|
+
enabled = (1..100).select { |i|
|
283
|
+
thing = actor_class.new(i)
|
284
|
+
subject.enabled?(thing)
|
285
|
+
}.size
|
286
|
+
|
259
287
|
enabled.should be(0)
|
260
288
|
end
|
261
289
|
|
@@ -268,7 +296,11 @@ describe Flipper::Feature do
|
|
268
296
|
before do
|
269
297
|
@gate = Flipper::Gates::PercentageOfRandom.new(subject)
|
270
298
|
Flipper::Gates::PercentageOfRandom.should_receive(:new).and_return(@gate)
|
271
|
-
subject.disable(five_percent_of_random)
|
299
|
+
@result = subject.disable(five_percent_of_random)
|
300
|
+
end
|
301
|
+
|
302
|
+
it "returns true" do
|
303
|
+
@result.should be_true
|
272
304
|
end
|
273
305
|
|
274
306
|
it "disables feature for time within percentage" do
|
@@ -305,7 +337,7 @@ describe Flipper::Feature do
|
|
305
337
|
|
306
338
|
context "with no arguments, but boolean enabled" do
|
307
339
|
before do
|
308
|
-
|
340
|
+
subject.enable
|
309
341
|
end
|
310
342
|
|
311
343
|
it "returns true" do
|
@@ -315,7 +347,7 @@ describe Flipper::Feature do
|
|
315
347
|
|
316
348
|
context "for actor in enabled group" do
|
317
349
|
before do
|
318
|
-
|
350
|
+
subject.enable admin_group
|
319
351
|
end
|
320
352
|
|
321
353
|
it "returns true" do
|
@@ -331,7 +363,7 @@ describe Flipper::Feature do
|
|
331
363
|
|
332
364
|
context "for enabled actor" do
|
333
365
|
before do
|
334
|
-
|
366
|
+
subject.enable pitt
|
335
367
|
end
|
336
368
|
|
337
369
|
it "returns true" do
|
@@ -345,7 +377,7 @@ describe Flipper::Feature do
|
|
345
377
|
end
|
346
378
|
|
347
379
|
it "returns true if boolean enabled" do
|
348
|
-
|
380
|
+
subject.enable
|
349
381
|
subject.enabled?(clooney).should be_true
|
350
382
|
end
|
351
383
|
end
|
@@ -355,7 +387,7 @@ describe Flipper::Feature do
|
|
355
387
|
@gate = Flipper::Gates::PercentageOfRandom.new(subject)
|
356
388
|
@gate.stub(:rand => 0.04)
|
357
389
|
Flipper::Gates::PercentageOfRandom.should_receive(:new).and_return(@gate)
|
358
|
-
|
390
|
+
subject.enable five_percent_of_random
|
359
391
|
end
|
360
392
|
|
361
393
|
it "returns true" do
|
@@ -371,7 +403,7 @@ describe Flipper::Feature do
|
|
371
403
|
@gate = Flipper::Gates::PercentageOfRandom.new(subject)
|
372
404
|
@gate.stub(:rand => 0.10)
|
373
405
|
Flipper::Gates::PercentageOfRandom.should_receive(:new).and_return(@gate)
|
374
|
-
|
406
|
+
subject.enable five_percent_of_random
|
375
407
|
end
|
376
408
|
|
377
409
|
it "returns false" do
|
@@ -382,7 +414,7 @@ describe Flipper::Feature do
|
|
382
414
|
end
|
383
415
|
|
384
416
|
it "returns true if boolean enabled" do
|
385
|
-
|
417
|
+
subject.enable
|
386
418
|
subject.enabled?.should be_true
|
387
419
|
subject.enabled?(nil).should be_true
|
388
420
|
subject.enabled?(pitt).should be_true
|
@@ -392,7 +424,7 @@ describe Flipper::Feature do
|
|
392
424
|
|
393
425
|
context "for a non flipper thing" do
|
394
426
|
before do
|
395
|
-
|
427
|
+
subject.enable admin_group
|
396
428
|
end
|
397
429
|
|
398
430
|
it "returns true if in enabled group" do
|
@@ -404,36 +436,11 @@ describe Flipper::Feature do
|
|
404
436
|
end
|
405
437
|
|
406
438
|
it "returns true if boolean enabled" do
|
407
|
-
|
439
|
+
subject.enable
|
408
440
|
subject.enabled?(admin_thing).should be_true
|
409
441
|
subject.enabled?(dev_thing).should be_true
|
410
442
|
end
|
411
443
|
end
|
412
|
-
|
413
|
-
context "for a non flipper thing that does not respond to something in group block" do
|
414
|
-
let(:actor) { double('Actor') }
|
415
|
-
|
416
|
-
before do
|
417
|
-
boomboom = Flipper.register(:boomboom) { |actor| actor.boomboom? }
|
418
|
-
enable_group boomboom
|
419
|
-
end
|
420
|
-
|
421
|
-
it "returns false" do
|
422
|
-
expect { subject.enabled?(actor) }.to raise_error
|
423
|
-
end
|
424
|
-
end
|
425
|
-
|
426
|
-
context "for a non flipper thing when group in adapter, but not defined in code" do
|
427
|
-
let(:actor) { double('Actor') }
|
428
|
-
|
429
|
-
before do
|
430
|
-
enable_group :support
|
431
|
-
end
|
432
|
-
|
433
|
-
it "returns false" do
|
434
|
-
subject.enabled?(actor).should be_false
|
435
|
-
end
|
436
|
-
end
|
437
444
|
end
|
438
445
|
|
439
446
|
context "enabling multiple groups, disabling everything, then enabling one group" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flipper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-06 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Feature flipper for any adapter
|
15
15
|
email:
|
@@ -19,7 +19,9 @@ extensions: []
|
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
21
|
- .gitignore
|
22
|
+
- .rspec
|
22
23
|
- .travis.yml
|
24
|
+
- Changelog.md
|
23
25
|
- Gemfile
|
24
26
|
- Guardfile
|
25
27
|
- LICENSE
|
@@ -30,6 +32,7 @@ files:
|
|
30
32
|
- examples/example_setup.rb
|
31
33
|
- examples/group.rb
|
32
34
|
- examples/individual_actor.rb
|
35
|
+
- examples/instrumentation.rb
|
33
36
|
- examples/percentage_of_actors.rb
|
34
37
|
- examples/percentage_of_random.rb
|
35
38
|
- flipper.gemspec
|
@@ -47,6 +50,11 @@ files:
|
|
47
50
|
- lib/flipper/gates/group.rb
|
48
51
|
- lib/flipper/gates/percentage_of_actors.rb
|
49
52
|
- lib/flipper/gates/percentage_of_random.rb
|
53
|
+
- lib/flipper/instrumentation/log_subscriber.rb
|
54
|
+
- lib/flipper/instrumentation/metriks.rb
|
55
|
+
- lib/flipper/instrumentation/metriks_subscriber.rb
|
56
|
+
- lib/flipper/instrumenters/memory.rb
|
57
|
+
- lib/flipper/instrumenters/noop.rb
|
50
58
|
- lib/flipper/key.rb
|
51
59
|
- lib/flipper/middleware/local_cache.rb
|
52
60
|
- lib/flipper/registry.rb
|
@@ -68,9 +76,23 @@ files:
|
|
68
76
|
- spec/flipper/adapters/memory_spec.rb
|
69
77
|
- spec/flipper/dsl_spec.rb
|
70
78
|
- spec/flipper/feature_spec.rb
|
79
|
+
- spec/flipper/gate_spec.rb
|
80
|
+
- spec/flipper/gates/actor_spec.rb
|
81
|
+
- spec/flipper/gates/boolean_spec.rb
|
82
|
+
- spec/flipper/gates/group_spec.rb
|
83
|
+
- spec/flipper/gates/percentage_of_actors_spec.rb
|
84
|
+
- spec/flipper/gates/percentage_of_random_spec.rb
|
85
|
+
- spec/flipper/instrumentation/log_subscriber_spec.rb
|
86
|
+
- spec/flipper/instrumentation/metriks_subscriber_spec.rb
|
87
|
+
- spec/flipper/instrumenters/memory_spec.rb
|
88
|
+
- spec/flipper/instrumenters/noop_spec.rb
|
71
89
|
- spec/flipper/key_spec.rb
|
72
90
|
- spec/flipper/middleware/local_cache_spec.rb
|
73
91
|
- spec/flipper/registry_spec.rb
|
92
|
+
- spec/flipper/toggle_spec.rb
|
93
|
+
- spec/flipper/toggles/boolean_spec.rb
|
94
|
+
- spec/flipper/toggles/set_spec.rb
|
95
|
+
- spec/flipper/toggles/value_spec.rb
|
74
96
|
- spec/flipper/types/actor_spec.rb
|
75
97
|
- spec/flipper/types/boolean_spec.rb
|
76
98
|
- spec/flipper/types/group_spec.rb
|
@@ -94,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
116
|
version: '0'
|
95
117
|
segments:
|
96
118
|
- 0
|
97
|
-
hash:
|
119
|
+
hash: 890771361704353632
|
98
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
121
|
none: false
|
100
122
|
requirements:
|
@@ -103,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
125
|
version: '0'
|
104
126
|
segments:
|
105
127
|
- 0
|
106
|
-
hash:
|
128
|
+
hash: 890771361704353632
|
107
129
|
requirements: []
|
108
130
|
rubyforge_project:
|
109
131
|
rubygems_version: 1.8.23
|
@@ -116,9 +138,23 @@ test_files:
|
|
116
138
|
- spec/flipper/adapters/memory_spec.rb
|
117
139
|
- spec/flipper/dsl_spec.rb
|
118
140
|
- spec/flipper/feature_spec.rb
|
141
|
+
- spec/flipper/gate_spec.rb
|
142
|
+
- spec/flipper/gates/actor_spec.rb
|
143
|
+
- spec/flipper/gates/boolean_spec.rb
|
144
|
+
- spec/flipper/gates/group_spec.rb
|
145
|
+
- spec/flipper/gates/percentage_of_actors_spec.rb
|
146
|
+
- spec/flipper/gates/percentage_of_random_spec.rb
|
147
|
+
- spec/flipper/instrumentation/log_subscriber_spec.rb
|
148
|
+
- spec/flipper/instrumentation/metriks_subscriber_spec.rb
|
149
|
+
- spec/flipper/instrumenters/memory_spec.rb
|
150
|
+
- spec/flipper/instrumenters/noop_spec.rb
|
119
151
|
- spec/flipper/key_spec.rb
|
120
152
|
- spec/flipper/middleware/local_cache_spec.rb
|
121
153
|
- spec/flipper/registry_spec.rb
|
154
|
+
- spec/flipper/toggle_spec.rb
|
155
|
+
- spec/flipper/toggles/boolean_spec.rb
|
156
|
+
- spec/flipper/toggles/set_spec.rb
|
157
|
+
- spec/flipper/toggles/value_spec.rb
|
122
158
|
- spec/flipper/types/actor_spec.rb
|
123
159
|
- spec/flipper/types/boolean_spec.rb
|
124
160
|
- spec/flipper/types/group_spec.rb
|