##// END OF EJS Templates
More accurate date validation....
Jean-Philippe Lang -
r6145:6c5b29bb681b
parent child
Show More
@@ -179,7 +179,7 class Query < ActiveRecord::Base
179 when :date, :date_past
179 when :date, :date_past
180 case operator_for(field)
180 case operator_for(field)
181 when "=", ">=", "<=", "><"
181 when "=", ">=", "<=", "><"
182 errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d{4}-\d{2}-\d{2}$/) }
182 errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && (!v.match(/^\d{4}-\d{2}-\d{2}$/) || (Date.parse(v) rescue nil).nil?) }
183 when ">t-", "<t-", "t-"
183 when ">t-", "<t-", "t-"
184 errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) }
184 errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) }
185 end
185 end
@@ -179,6 +179,14 class QueryTest < ActiveSupport::TestCase
179 assert !query.valid?
179 assert !query.valid?
180 end
180 end
181
181
182 def test_date_filter_should_not_accept_invalid_date_values
183 query = Query.new(:name => '_')
184 query.add_filter('created_on', '=', ['2011-01-34'])
185
186 assert query.has_filter?('created_on')
187 assert !query.valid?
188 end
189
182 def test_relative_date_filter_should_not_accept_non_integer_values
190 def test_relative_date_filter_should_not_accept_non_integer_values
183 query = Query.new(:name => '_')
191 query = Query.new(:name => '_')
184 query.add_filter('created_on', '>t-', ['a'])
192 query.add_filter('created_on', '>t-', ['a'])
General Comments 0
You need to be logged in to leave comments. Login now