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