More accurate date validation.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6265 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
308a922d80
commit
6c5b29bb68
@ -179,7 +179,7 @@ class Query < ActiveRecord::Base
|
||||
when :date, :date_past
|
||||
case operator_for(field)
|
||||
when "=", ">=", "<=", "><"
|
||||
errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d{4}-\d{2}-\d{2}$/) }
|
||||
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?) }
|
||||
when ">t-", "<t-", "t-"
|
||||
errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) }
|
||||
end
|
||||
|
@ -179,6 +179,14 @@ class QueryTest < ActiveSupport::TestCase
|
||||
assert !query.valid?
|
||||
end
|
||||
|
||||
def test_date_filter_should_not_accept_invalid_date_values
|
||||
query = Query.new(:name => '_')
|
||||
query.add_filter('created_on', '=', ['2011-01-34'])
|
||||
|
||||
assert query.has_filter?('created_on')
|
||||
assert !query.valid?
|
||||
end
|
||||
|
||||
def test_relative_date_filter_should_not_accept_non_integer_values
|
||||
query = Query.new(:name => '_')
|
||||
query.add_filter('created_on', '>t-', ['a'])
|
||||
|
Loading…
x
Reference in New Issue
Block a user