@@ -7,7 +7,8 @@ class ValidatableTask
77 :some_day => :string ,
88 :some_float => :float ,
99 :some_int => :int ,
10- :not_validate => :string
10+ :if_with_proc => :string ,
11+ :if_with_sym => :string
1112
1213 validate :name , :presence => true
1314 validate :name , :length => 2 ..10
@@ -16,7 +17,8 @@ class ValidatableTask
1617 validate :some_day , :length => 8 ..10
1718 validate :some_float , :presence => true
1819 validate :some_int , :presence => true
19- validate :not_validate , :presence => true , :if => :false_condition_method
20+ validate :if_with_proc , :presence => true , :if => -> { if_with_proc == 'unexpected' }
21+ validate :if_with_sym , :presence => true , :if => :false_condition_method
2022
2123 def false_condition_method
2224 false
@@ -31,14 +33,24 @@ def false_condition_method
3133 :some_day => '12-12-12' ,
3234 :some_float => 1.080 ,
3335 :some_int => 99 ,
34- :not_validate => 'Never validated column'
36+ :if_with_proc => 'Never validated column' ,
37+ :if_with_sym => 'Never validated column'
3538 }
3639 end
3740
3841 describe 'conditional validation' do
39- it 'does not validate if condition method returns false' do
40- task = ValidatableTask . new ( @valid_tasks . except ( :not_validate ) )
41- task . valid? . should == true
42+ context 'with conditional by method' do
43+ it 'does not validate if condition returns false' do
44+ task = ValidatableTask . new ( @valid_tasks . except ( :if_with_sym ) )
45+ task . valid? . should == true
46+ end
47+ end
48+
49+ context 'with conditional by proc' do
50+ it 'does not validate if condition returns false' do
51+ task = ValidatableTask . new ( @valid_tasks . except ( :if_with_proc ) )
52+ task . valid? . should == true
53+ end
4254 end
4355 end
4456
0 commit comments