ball_gag 0.0.5 → 0.0.6
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/Gemfile.lock +1 -1
- data/lib/ball_gag.rb +1 -0
- data/lib/ball_gag/bowling_ball.rb +19 -0
- data/lib/ball_gag/disable.rb +37 -0
- data/lib/ball_gag/gag.rb +2 -0
- data/lib/ball_gag/version.rb +1 -1
- data/spec/cloak_spec.rb +29 -0
- data/spec/gag_spec.rb +66 -1
- metadata +9 -8
data/Gemfile.lock
CHANGED
data/lib/ball_gag.rb
CHANGED
@@ -40,6 +40,25 @@ module BowlingBall
|
|
40
40
|
BallGag.only_validate_on_attribute_changed = bool
|
41
41
|
end
|
42
42
|
|
43
|
+
def enabled?
|
44
|
+
BallGag.enabled?
|
45
|
+
end
|
46
|
+
|
47
|
+
def enable! &block
|
48
|
+
if block
|
49
|
+
BallGag.enable! &block
|
50
|
+
else
|
51
|
+
BallGag.enable!
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def disable! &block
|
56
|
+
if block
|
57
|
+
BallGag.disable! &block
|
58
|
+
else
|
59
|
+
BallGag.disable!
|
60
|
+
end
|
61
|
+
end
|
43
62
|
end
|
44
63
|
end
|
45
64
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module BallGag
|
2
|
+
module Disable
|
3
|
+
module ClassMethods
|
4
|
+
def enable!
|
5
|
+
old_enabled = @enabled
|
6
|
+
@enabled = true
|
7
|
+
if block_given?
|
8
|
+
begin
|
9
|
+
yield
|
10
|
+
ensure
|
11
|
+
@enabled = old_enabled
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def disable!
|
17
|
+
old_enabled = @enabled
|
18
|
+
@enabled = false
|
19
|
+
if block_given?
|
20
|
+
begin
|
21
|
+
yield
|
22
|
+
ensure
|
23
|
+
@enabled = old_enabled
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def enabled?
|
29
|
+
return @enabled if @enabled == false
|
30
|
+
@enabled || true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
extend Disable::ClassMethods
|
36
|
+
end
|
37
|
+
|
data/lib/ball_gag/gag.rb
CHANGED
@@ -81,6 +81,8 @@ module BallGag
|
|
81
81
|
attributes.each do |attr|
|
82
82
|
@gagged_attributes_methods.send(:define_method,
|
83
83
|
gagged_attribute_negative_interpellation_name(attr)) do
|
84
|
+
return true unless BallGag.enabled?
|
85
|
+
|
84
86
|
@gagged_attribute_results ||= {}
|
85
87
|
|
86
88
|
# Is the attribute dirty?
|
data/lib/ball_gag/version.rb
CHANGED
data/spec/cloak_spec.rb
CHANGED
@@ -8,6 +8,7 @@ describe 'BallGag cloaking' do
|
|
8
8
|
BallGag.verb = nil
|
9
9
|
BallGag.preterite = nil
|
10
10
|
BallGag.only_validate_on_attribute_changed = false
|
11
|
+
BallGag.enable!
|
11
12
|
end
|
12
13
|
|
13
14
|
after do
|
@@ -153,6 +154,34 @@ describe 'BallGag cloaking' do
|
|
153
154
|
BowlingBall.only_validate_on_attribute_changed = true
|
154
155
|
BallGag.only_validate_on_attribute_changed.should be_true
|
155
156
|
end
|
157
|
+
|
158
|
+
it 'should enable' do
|
159
|
+
BowlingBall.enable!
|
160
|
+
BowlingBall.should be_enabled
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'should disable' do
|
164
|
+
BowlingBall.disable!
|
165
|
+
BowlingBall.should_not be_enabled
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'should report enabled?' do
|
169
|
+
BowlingBall.should be_enabled
|
170
|
+
end
|
171
|
+
|
172
|
+
it 'should use block provided to enable!' do
|
173
|
+
BowlingBall.disable!
|
174
|
+
BowlingBall.enable! do
|
175
|
+
BowlingBall.should be_enabled
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
it 'should use block provided to disable!' do
|
180
|
+
BowlingBall.enable!
|
181
|
+
BowlingBall.disable! do
|
182
|
+
BowlingBall.should_not be_enabled
|
183
|
+
end
|
184
|
+
end
|
156
185
|
end
|
157
186
|
end
|
158
187
|
|
data/spec/gag_spec.rb
CHANGED
@@ -5,6 +5,7 @@ describe ExampleModel do
|
|
5
5
|
BallGag.engine = nil
|
6
6
|
BallGag.verb = nil
|
7
7
|
BallGag.preterite = nil
|
8
|
+
BallGag.enable!
|
8
9
|
ExampleModel.clear_gagged_attributes
|
9
10
|
end
|
10
11
|
|
@@ -278,7 +279,7 @@ describe ExampleModel do
|
|
278
279
|
|
279
280
|
describe 'error cases' do
|
280
281
|
context 'when gagged with no callable and no engine is configured' do
|
281
|
-
it 'should raise when gag is
|
282
|
+
it 'should raise when gag is checked' do
|
282
283
|
ExampleModel.gag :words
|
283
284
|
|
284
285
|
-> { ExampleModel.new.words_gagged? }.
|
@@ -301,5 +302,69 @@ describe ExampleModel do
|
|
301
302
|
end
|
302
303
|
end
|
303
304
|
end
|
305
|
+
|
306
|
+
describe 'global enable/disable' do
|
307
|
+
it 'should respond to enable!' do
|
308
|
+
BallGag.should respond_to(:enable!)
|
309
|
+
end
|
310
|
+
|
311
|
+
it 'should respond to disable!' do
|
312
|
+
BallGag.should respond_to(:disable!)
|
313
|
+
end
|
314
|
+
|
315
|
+
it 'should respond to enabled?' do
|
316
|
+
BallGag.should respond_to(:enabled?)
|
317
|
+
end
|
318
|
+
|
319
|
+
it 'should initially be enabled' do
|
320
|
+
BallGag.should be_enabled
|
321
|
+
end
|
322
|
+
|
323
|
+
it 'should be disabled after disable!' do
|
324
|
+
BallGag.disable!
|
325
|
+
BallGag.should_not be_enabled
|
326
|
+
end
|
327
|
+
|
328
|
+
context 'when disabled' do
|
329
|
+
before(:each) do
|
330
|
+
BallGag.disable!
|
331
|
+
end
|
332
|
+
|
333
|
+
it 'should not report attribute as gagged' do
|
334
|
+
ExampleModel.gag :words, ->(*) { false }
|
335
|
+
ExampleModel.new.words_gagged?.should be_false
|
336
|
+
end
|
337
|
+
|
338
|
+
it 'should not call callable' do
|
339
|
+
callable = ->(*) { false }
|
340
|
+
ExampleModel.gag :words, callable
|
341
|
+
callable.should_not_receive(:call)
|
342
|
+
ExampleModel.new.words_gagged?
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
346
|
+
context 'when disabled with a block' do
|
347
|
+
it 'should not report attribute as gagged' do
|
348
|
+
ExampleModel.gag :words, ->(*) { false }
|
349
|
+
instance = ExampleModel.new
|
350
|
+
BallGag.disable! do
|
351
|
+
instance.words_gagged?.should be_false
|
352
|
+
end
|
353
|
+
instance.words_gagged?.should be_true
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
357
|
+
context 'when enabled with a block' do
|
358
|
+
it 'should call callable' do
|
359
|
+
ExampleModel.gag :words, ->(*) { false }
|
360
|
+
instance = ExampleModel.new
|
361
|
+
BallGag.disable!
|
362
|
+
BallGag.enable! do
|
363
|
+
instance.words_gagged?.should be_true
|
364
|
+
end
|
365
|
+
instance.words_gagged?.should be_false
|
366
|
+
end
|
367
|
+
end
|
368
|
+
end
|
304
369
|
end
|
305
370
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ball_gag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70135835371000 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70135835371000
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70135835370140 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70135835370140
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activemodel
|
38
|
-
requirement: &
|
38
|
+
requirement: &70135835369160 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70135835369160
|
47
47
|
description: Validate user input using pluggable back-ends
|
48
48
|
email:
|
49
49
|
- duncan@dweebd.com
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- lib/ball_gag.rb
|
63
63
|
- lib/ball_gag/bowling_ball.rb
|
64
64
|
- lib/ball_gag/cloak.rb
|
65
|
+
- lib/ball_gag/disable.rb
|
65
66
|
- lib/ball_gag/engine.rb
|
66
67
|
- lib/ball_gag/errors.rb
|
67
68
|
- lib/ball_gag/gag.rb
|