veto 0.1.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -94
- data/lib/veto/blocks/block.rb +25 -0
- data/lib/veto/blocks/checker.rb +28 -0
- data/lib/veto/blocks/conditional_block.rb +26 -0
- data/lib/veto/blocks/validate_block.rb +18 -0
- data/lib/veto/blocks/validates_block.rb +51 -0
- data/lib/veto/blocks/with_options_block.rb +7 -0
- data/lib/veto/check_context_object.rb +10 -0
- data/lib/veto/checks/attribute_check.rb +19 -0
- data/lib/veto/checks/check.rb +7 -0
- data/lib/veto/checks/check_factory.rb +18 -0
- data/lib/veto/{validators/exact_length_validator.rb → checks/exact_length_check.rb} +5 -4
- data/lib/veto/{validators/format_validator.rb → checks/format_check.rb} +5 -4
- data/lib/veto/{validators/greater_than_validator.rb → checks/greater_than_check.rb} +2 -4
- data/lib/veto/{validators/greater_than_or_equal_to_validator.rb → checks/greater_than_or_equal_to_check.rb} +2 -4
- data/lib/veto/{validators/inclusion_validator.rb → checks/inclusion_check.rb} +2 -4
- data/lib/veto/{validators/integer_validator.rb → checks/integer_check.rb} +2 -4
- data/lib/veto/{validators/length_range_validator.rb → checks/length_range_check.rb} +2 -4
- data/lib/veto/{validators/less_than_validator.rb → checks/less_than_check.rb} +2 -4
- data/lib/veto/{validators/less_than_or_equal_to_validator.rb → checks/less_than_or_equal_to_check.rb} +2 -4
- data/lib/veto/{validators/max_length_validator.rb → checks/max_length_check.rb} +2 -4
- data/lib/veto/checks/method_check.rb +17 -0
- data/lib/veto/{validators/min_length_validator.rb → checks/min_length_check.rb} +2 -4
- data/lib/veto/{validators/not_null_validator.rb → checks/not_null_check.rb} +2 -4
- data/lib/veto/{validators/numeric_validator.rb → checks/numeric_check.rb} +2 -4
- data/lib/veto/{validators/presence_validator.rb → checks/presence_check.rb} +2 -4
- data/lib/veto/conditions/condition.rb +7 -0
- data/lib/veto/conditions/condition_factory.rb +18 -0
- data/lib/veto/conditions/conditions.rb +21 -0
- data/lib/veto/conditions/context_method_condition.rb +11 -0
- data/lib/veto/conditions/entity_eval_condition.rb +11 -0
- data/lib/veto/conditions/if_conditions.rb +8 -0
- data/lib/veto/conditions/if_unless_conditions.rb +21 -0
- data/lib/veto/conditions/passing_condition.rb +7 -0
- data/lib/veto/conditions/primative_condition.rb +11 -0
- data/lib/veto/conditions/proc_condition.rb +11 -0
- data/lib/veto/conditions/unless_conditions.rb +8 -0
- data/lib/veto/configuration.rb +38 -37
- data/lib/veto/errors.rb +27 -27
- data/lib/veto/exceptions.rb +13 -3
- data/lib/veto/model.rb +33 -35
- data/lib/veto/validator.rb +68 -169
- data/lib/veto/version.rb +1 -1
- data/lib/veto.rb +90 -49
- data/spec/blocks/block_spec.rb +31 -0
- data/spec/blocks/check_block_spec.rb +46 -0
- data/spec/blocks/conditional_block_spec.rb +36 -0
- data/spec/blocks/validate_block_spec.rb +18 -0
- data/spec/blocks/validates_block_spec.rb +22 -0
- data/spec/checks/exact_length_check_spec.rb +37 -0
- data/spec/checks/format_validator_spec.rb +37 -0
- data/spec/checks/greater_than_check_spec.rb +48 -0
- data/spec/checks/greater_than_or_equal_to_check_spec.rb +48 -0
- data/spec/checks/inclusion_check_spec.rb +37 -0
- data/spec/checks/integer_check_spec.rb +37 -0
- data/spec/checks/length_range_check_spec.rb +37 -0
- data/spec/checks/less_than_check_spec.rb +48 -0
- data/spec/checks/less_than_or_equal_to_check_spec.rb +48 -0
- data/spec/checks/max_length_check_spec.rb +48 -0
- data/spec/checks/method_check_spec.rb +13 -0
- data/spec/checks/min_length_check_spec.rb +48 -0
- data/spec/checks/not_null_check_spec.rb +37 -0
- data/spec/checks/numeric_check_spec.rb +37 -0
- data/spec/checks/presence_check_spec.rb +48 -0
- data/spec/conditions/condition_factory_spec.rb +31 -0
- data/spec/conditions/conditions_spec.rb +25 -0
- data/spec/conditions/context_method_condition_spec.rb +25 -0
- data/spec/conditions/entity_eval_condition_spec.rb +21 -0
- data/spec/conditions/if_conditions_spec.rb +65 -0
- data/spec/conditions/if_unless_conditions_spec.rb +33 -0
- data/spec/conditions/primative_condition_spec.rb +22 -0
- data/spec/conditions/proc_condition_spec.rb +25 -0
- data/spec/conditions/unless_conditions_spec.rb +65 -0
- data/spec/configuration/message_spec.rb +18 -23
- data/spec/spec_helper.rb +2 -1
- data/spec/validator_spec.rb +224 -115
- metadata +96 -61
- data/lib/veto/attribute_validator_factory.rb +0 -36
- data/lib/veto/builder.rb +0 -65
- data/lib/veto/conditions.rb +0 -23
- data/lib/veto/conditions_evaluator.rb +0 -30
- data/lib/veto/validators/abstract_validator.rb +0 -15
- data/lib/veto/validators/attribute_validator.rb +0 -22
- data/lib/veto/validators/custom_method_validator.rb +0 -19
- data/spec/attribute_validator_factory_spec.rb +0 -72
- data/spec/builder_spec.rb +0 -38
- data/spec/conditions_evaluator_spec.rb +0 -90
- data/spec/conditions_spec.rb +0 -16
- data/spec/configuration_spec.rb +0 -6
- data/spec/errors_spec.rb +0 -22
- data/spec/model_spec.rb +0 -67
- data/spec/system/validator_spec.rb +0 -530
- data/spec/validators/exact_length_validator_spec.rb +0 -37
- data/spec/validators/format_validator_spec.rb +0 -32
- data/spec/validators/inclusion_validator_spec.rb +0 -45
- data/spec/validators/integer_validator_spec.rb +0 -42
- data/spec/validators/length_range_validator_spec.rb +0 -55
- data/spec/validators/max_length_validator_spec.rb +0 -32
- data/spec/validators/min_length_validator_spec.rb +0 -32
- data/spec/validators/not_null_validator_spec.rb +0 -27
- data/spec/validators/numeric_validator_spec.rb +0 -42
- data/spec/validators/presence_validator_spec.rb +0 -47
- data/spec/veto_spec.rb +0 -24
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Veto::NumericCheck do
|
4
|
+
context 'when value is numeric' do
|
5
|
+
it 'assigns no errors' do
|
6
|
+
entity = stub(:name => 123)
|
7
|
+
errors = new_errors
|
8
|
+
check = new_check(:name)
|
9
|
+
|
10
|
+
check.call(new_cto(entity, errors))
|
11
|
+
errors[:name].must_be_nil
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when value is not numeric' do
|
16
|
+
it 'assigns no errors' do
|
17
|
+
entity = stub(:name => 'abc')
|
18
|
+
errors = new_errors
|
19
|
+
check = new_check(:name)
|
20
|
+
|
21
|
+
check.call(new_cto(entity, errors))
|
22
|
+
errors[:name].must_equal(["is not a number"])
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def new_cto(entity, errors)
|
27
|
+
stub(:entity => entity, :errors => errors)
|
28
|
+
end
|
29
|
+
|
30
|
+
def new_check(*args)
|
31
|
+
Veto::NumericCheck.new(*args)
|
32
|
+
end
|
33
|
+
|
34
|
+
def new_errors
|
35
|
+
Veto::Errors.new
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Veto::PresenceCheck do
|
4
|
+
context 'when value is not null' do
|
5
|
+
it 'assigns no errors' do
|
6
|
+
entity = stub(:name => 'abcde')
|
7
|
+
errors = new_errors
|
8
|
+
check = new_check(:name)
|
9
|
+
|
10
|
+
check.call(new_cto(entity, errors))
|
11
|
+
errors[:name].must_be_nil
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when value is blank' do
|
16
|
+
it 'assigns no errors' do
|
17
|
+
entity = stub(:name => '')
|
18
|
+
errors = new_errors
|
19
|
+
check = new_check(:name)
|
20
|
+
|
21
|
+
check.call(new_cto(entity, errors))
|
22
|
+
errors[:name].must_equal(["is not present"])
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when value null' do
|
27
|
+
it 'assigns no errors' do
|
28
|
+
entity = stub(:name => nil)
|
29
|
+
errors = new_errors
|
30
|
+
check = new_check(:name)
|
31
|
+
|
32
|
+
check.call(new_cto(entity, errors))
|
33
|
+
errors[:name].must_equal(["is not present"])
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def new_cto(entity, errors)
|
38
|
+
stub(:entity => entity, :errors => errors)
|
39
|
+
end
|
40
|
+
|
41
|
+
def new_check(*args)
|
42
|
+
Veto::PresenceCheck.new(*args)
|
43
|
+
end
|
44
|
+
|
45
|
+
def new_errors
|
46
|
+
Veto::Errors.new
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Veto::ConditionFactory do
|
4
|
+
context 'when condition is a string' do
|
5
|
+
it 'returns entity eval condition instance' do
|
6
|
+
factory.new('a-string').must_be_instance_of(Veto::EntityEvalCondition)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'when condition is a symbol' do
|
11
|
+
it 'returns validator method condition instance' do
|
12
|
+
factory.new(:a_symbol).must_be_instance_of(Veto::ContextMethodCondition)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'when condition is a proc' do
|
17
|
+
it 'returns proc condition instance' do
|
18
|
+
factory.new(Proc.new{'blah'}).must_be_instance_of(Veto::ProcCondition)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when condition is any other general statement or primative' do
|
23
|
+
it 'returns primative condition instance' do
|
24
|
+
factory.new(true).must_be_instance_of(Veto::PrimativeCondition)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def factory
|
29
|
+
Veto::ConditionFactory
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Veto::Conditions do
|
4
|
+
it 'accepts single option' do
|
5
|
+
group = new_conditions(:good_method?)
|
6
|
+
group.size.must_equal(1)
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'accepts array of options' do
|
10
|
+
group = new_conditions([:good_method?, Proc.new{ 'blah' }])
|
11
|
+
group.size.must_equal(2)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'iterates through conditions' do
|
15
|
+
group = new_conditions([:good_method?, Proc.new{ 'blah' }])
|
16
|
+
condition_list = []
|
17
|
+
|
18
|
+
group.each {|c| condition_list << c.class.name }
|
19
|
+
condition_list.must_equal(["Veto::ContextMethodCondition", "Veto::ProcCondition"])
|
20
|
+
end
|
21
|
+
|
22
|
+
def new_conditions(*args)
|
23
|
+
Veto::Conditions.new(*args)
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Veto::ContextMethodCondition do
|
4
|
+
context 'when context method returns truthy value' do
|
5
|
+
it 'passes' do
|
6
|
+
context = stub(:is_good? => true)
|
7
|
+
cco = stub(:context => context, :entity => stub)
|
8
|
+
condition = new_condition(:is_good?)
|
9
|
+
condition.pass?(cco).must_equal(true)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'when context method returns falsy value' do
|
14
|
+
it 'fails' do
|
15
|
+
context = stub(:is_good? => false)
|
16
|
+
cco = stub(:context => context, :entity => stub)
|
17
|
+
condition = new_condition(:is_good?)
|
18
|
+
condition.pass?(cco).must_equal(false)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def new_condition(*args)
|
23
|
+
Veto::ContextMethodCondition.new(*args)
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Veto::EntityEvalCondition do
|
4
|
+
it 'passes when entity evals to truthy value' do
|
5
|
+
entity = stub(:today_is_good => 'yup')
|
6
|
+
cco = stub(:entity => entity)
|
7
|
+
condition = new_condition('today_is_good')
|
8
|
+
condition.pass?(cco).must_equal(true)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'fails when entity evals to falsy value' do
|
12
|
+
entity = stub(:today_is_good => false)
|
13
|
+
cco = stub(:entity => entity)
|
14
|
+
condition = new_condition('today_is_good')
|
15
|
+
condition.pass?(cco).must_equal(false)
|
16
|
+
end
|
17
|
+
|
18
|
+
def new_condition(*args)
|
19
|
+
Veto::EntityEvalCondition.new(*args)
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Veto::IfConditions do
|
4
|
+
context 'with passing condition' do
|
5
|
+
it 'correctly evalutes conditions' do
|
6
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
7
|
+
cco = stub(:entity => circle)
|
8
|
+
eval_condition = 'can_roll?' # pass
|
9
|
+
|
10
|
+
condition = new_conditions(eval_condition)
|
11
|
+
condition.pass?(cco).must_equal(true)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'with failing condition' do
|
16
|
+
it 'correctly evalutes conditions' do
|
17
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
18
|
+
cco = stub(:entity => circle)
|
19
|
+
eval_condition = 'is_stackable?' # fail
|
20
|
+
|
21
|
+
condition = new_conditions(eval_condition)
|
22
|
+
condition.pass?(cco).must_equal(false)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'with passing conditions' do
|
27
|
+
it 'correctly evalutes conditions' do
|
28
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
29
|
+
cco = stub(:entity => circle)
|
30
|
+
proc_condition = Proc.new{|entity| entity.is_round?} # pass
|
31
|
+
eval_condition = 'can_roll?' # pass
|
32
|
+
|
33
|
+
condition = new_conditions([proc_condition, eval_condition])
|
34
|
+
condition.pass?(cco).must_equal(true)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'with one passing and one failing condition' do
|
39
|
+
it 'correctly evalutes conditions' do
|
40
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
41
|
+
cco = stub(:entity => circle)
|
42
|
+
proc_condition = Proc.new{|entity| entity.is_round?} # pass
|
43
|
+
eval_condition = 'has_corners?' # fail
|
44
|
+
|
45
|
+
condition = new_conditions([proc_condition, eval_condition])
|
46
|
+
condition.pass?(cco).must_equal(false)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'with failing conditions' do
|
51
|
+
it 'correctly evalutes conditions' do
|
52
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
53
|
+
cco = stub(:entity => circle)
|
54
|
+
proc_condition = Proc.new{|entity| entity.has_corners?} # fail
|
55
|
+
eval_condition = 'is_stackable?' # fail
|
56
|
+
|
57
|
+
condition = new_conditions([proc_condition, eval_condition])
|
58
|
+
condition.pass?(cco).must_equal(false)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def new_conditions(*args)
|
63
|
+
Veto::IfConditions.new(*args)
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Veto::IfUnlessConditions do
|
4
|
+
context 'when passing conditions' do
|
5
|
+
it 'correctly evaluates conditions' do
|
6
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
7
|
+
cco = stub(:entity => circle)
|
8
|
+
|
9
|
+
condition = new_if_unless_conditions(
|
10
|
+
:if => 'can_roll?',
|
11
|
+
:unless => 'has_corners?'
|
12
|
+
)
|
13
|
+
condition.pass?(cco).must_equal(true)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'when failing conditions' do
|
18
|
+
it 'correctly evaluates conditions' do
|
19
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
20
|
+
cco = stub(:entity => circle)
|
21
|
+
|
22
|
+
condition = new_if_unless_conditions(
|
23
|
+
:if => 'has_corners?',
|
24
|
+
:unless => 'can_roll?'
|
25
|
+
)
|
26
|
+
condition.pass?(cco).must_equal(false)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def new_if_unless_conditions(*args)
|
31
|
+
Veto::IfUnlessConditions.new(*args)
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Veto::PrimativeCondition do
|
4
|
+
context 'when input coerses to true' do
|
5
|
+
it 'passes' do
|
6
|
+
new_condition(true).pass?.must_equal(true)
|
7
|
+
new_condition('string').pass?.must_equal(true)
|
8
|
+
new_condition(:symbol).pass?.must_equal(true)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'when input coerses to false' do
|
13
|
+
it 'fails' do
|
14
|
+
new_condition(false).pass?.must_equal(false)
|
15
|
+
new_condition('blah' == 'blahblah').pass?.must_equal(false)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def new_condition(*args)
|
20
|
+
Veto::PrimativeCondition.new(*args)
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Veto::ProcCondition do
|
4
|
+
context 'when proc returns truthy value' do
|
5
|
+
it 'passes' do
|
6
|
+
entity = stub(:good? => true)
|
7
|
+
cco = stub(:entity => entity)
|
8
|
+
condition = new_condition(Proc.new{|e| e.good? })
|
9
|
+
condition.pass?(cco).must_equal(true)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'when proc returns falsy value' do
|
14
|
+
it 'fails' do
|
15
|
+
entity = stub(:good? => false)
|
16
|
+
cco = stub(:entity => entity)
|
17
|
+
condition = new_condition(Proc.new{|e| e.good? })
|
18
|
+
condition.pass?(cco).must_equal(false)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def new_condition(*args)
|
23
|
+
Veto::ProcCondition.new(*args)
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Veto::UnlessConditions do
|
4
|
+
context 'with passing condition' do
|
5
|
+
it 'correctly evalutes conditions' do
|
6
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
7
|
+
cco = stub(:entity => circle)
|
8
|
+
eval_condition = 'has_corners?' # fail
|
9
|
+
|
10
|
+
condition = new_conditions(eval_condition)
|
11
|
+
condition.pass?(cco).must_equal(true)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'with failing condition' do
|
16
|
+
it 'correctly evalutes conditions' do
|
17
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
18
|
+
cco = stub(:entity => circle)
|
19
|
+
eval_condition = 'is_round?' # pass
|
20
|
+
|
21
|
+
condition = new_conditions(eval_condition)
|
22
|
+
condition.pass?(cco).must_equal(false)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'with passing conditions' do
|
27
|
+
it 'correctly evalutes conditions' do
|
28
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
29
|
+
cco = stub(:entity => circle)
|
30
|
+
proc_condition = Proc.new{|entity| entity.is_stackable?} # fail
|
31
|
+
eval_condition = 'has_corners?' # fail
|
32
|
+
|
33
|
+
condition = new_conditions([proc_condition, eval_condition])
|
34
|
+
condition.pass?(cco).must_equal(true)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'with one passing and one failing condition' do
|
39
|
+
it 'correctly evalutes conditions' do
|
40
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
41
|
+
cco = stub(:entity => circle)
|
42
|
+
proc_condition = Proc.new{|entity| entity.is_round?} # pass
|
43
|
+
eval_condition = 'is_stackable?' # fail
|
44
|
+
|
45
|
+
condition = new_conditions([proc_condition, eval_condition])
|
46
|
+
condition.pass?(cco).must_equal(false)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'with failing conditions' do
|
51
|
+
it 'correctly evalutes conditions' do
|
52
|
+
circle = stub(:is_round? => true, :can_roll? => true, :has_corners? => false, :is_stackable? => false)
|
53
|
+
cco = stub(:entity => circle)
|
54
|
+
proc_condition = Proc.new{|entity| entity.is_round?} # pass
|
55
|
+
eval_condition = 'can_roll?' # pass
|
56
|
+
|
57
|
+
condition = new_conditions([proc_condition, eval_condition])
|
58
|
+
condition.pass?(cco).must_equal(false)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def new_conditions(*args)
|
63
|
+
Veto::UnlessConditions.new(*args)
|
64
|
+
end
|
65
|
+
end
|
@@ -1,30 +1,25 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'veto/configuration'
|
3
2
|
|
4
3
|
describe Veto::Configuration::Message do
|
5
|
-
|
6
|
-
|
4
|
+
it 'gets message for check type' do
|
5
|
+
msg = new_message
|
6
|
+
msg.get(:exact_length, 23).must_equal('is not 23 characters')
|
7
|
+
end
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
9
|
+
it 'overrides message for check type' do
|
10
|
+
msg = new_message
|
11
|
+
msg.set(:exact_length, Proc.new{'custom message'})
|
12
|
+
msg.get(:exact_length).must_equal('custom message')
|
13
|
+
end
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end
|
15
|
+
context 'when type unknown' do
|
16
|
+
it 'outputs default message' do
|
17
|
+
msg = new_message
|
18
|
+
msg.get(:does_not_exist).must_equal('is not valid')
|
19
|
+
end
|
20
|
+
end
|
23
21
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
22
|
+
def new_message
|
23
|
+
Veto::Configuration::Message.new
|
24
|
+
end
|
30
25
|
end
|