@@ -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