##// END OF EJS Templates
Validate date filters values....
Jean-Philippe Lang -
r6144:308a922d8033
parent child
Show More
@@ -176,6 +176,13 class Query < ActiveRecord::Base
176 errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) }
176 errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) }
177 when :float
177 when :float
178 errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+(\.\d*)?$/) }
178 errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+(\.\d*)?$/) }
179 when :date, :date_past
180 case operator_for(field)
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}$/) }
183 when ">t-", "<t-", "t-"
184 errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) }
185 end
179 end
186 end
180 end
187 end
181
188
@@ -170,6 +170,22 class QueryTest < ActiveSupport::TestCase
170 assert_include "CAST(custom_values.value AS decimal(60,3)) BETWEEN 30.0 AND 40.0", query.statement
170 assert_include "CAST(custom_values.value AS decimal(60,3)) BETWEEN 30.0 AND 40.0", query.statement
171 find_issues_with_query(query)
171 find_issues_with_query(query)
172 end
172 end
173
174 def test_date_filter_should_not_accept_non_date_values
175 query = Query.new(:name => '_')
176 query.add_filter('created_on', '=', ['a'])
177
178 assert query.has_filter?('created_on')
179 assert !query.valid?
180 end
181
182 def test_relative_date_filter_should_not_accept_non_integer_values
183 query = Query.new(:name => '_')
184 query.add_filter('created_on', '>t-', ['a'])
185
186 assert query.has_filter?('created_on')
187 assert !query.valid?
188 end
173
189
174 def test_operator_date_equals
190 def test_operator_date_equals
175 query = Query.new(:name => '_')
191 query = Query.new(:name => '_')
General Comments 0
You need to be logged in to leave comments. Login now