@@ -176,6 +176,13 class Query < ActiveRecord::Base | |||
|
176 | 176 | errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) } |
|
177 | 177 | when :float |
|
178 | 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 | 186 | end |
|
180 | 187 | end |
|
181 | 188 |
@@ -171,6 +171,22 class QueryTest < ActiveSupport::TestCase | |||
|
171 | 171 | find_issues_with_query(query) |
|
172 | 172 | end |
|
173 | 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 | |
|
189 | ||
|
174 | 190 | def test_operator_date_equals |
|
175 | 191 | query = Query.new(:name => '_') |
|
176 | 192 | query.add_filter('due_date', '=', ['2011-07-10']) |
General Comments 0
You need to be logged in to leave comments.
Login now