@@ -174,9 +174,9 class Query < ActiveRecord::Base | |||||
174 | if values_for(field) |
|
174 | if values_for(field) | |
175 | case type_for(field) |
|
175 | case type_for(field) | |
176 | when :integer |
|
176 | when :integer | |
177 | add_filter_error(field, :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) } |
|
177 | add_filter_error(field, :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^[+-]?\d+$/) } | |
178 | when :float |
|
178 | when :float | |
179 | add_filter_error(field, :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+(\.\d*)?$/) } |
|
179 | add_filter_error(field, :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^[+-]?\d+(\.\d*)?$/) } | |
180 | when :date, :date_past |
|
180 | when :date, :date_past | |
181 | case operator_for(field) |
|
181 | case operator_for(field) | |
182 | when "=", ">=", "<=", "><" |
|
182 | when "=", ">=", "<=", "><" |
@@ -179,6 +179,20 class QueryTest < ActiveSupport::TestCase | |||||
179 | assert_equal 2, issues.first.id |
|
179 | assert_equal 2, issues.first.id | |
180 | end |
|
180 | end | |
181 |
|
181 | |||
|
182 | def test_operator_is_on_integer_custom_field_should_accept_negative_value | |||
|
183 | f = IssueCustomField.create!(:name => 'filter', :field_format => 'int', :is_for_all => true, :is_filter => true) | |||
|
184 | CustomValue.create!(:custom_field => f, :customized => Issue.find(1), :value => '7') | |||
|
185 | CustomValue.create!(:custom_field => f, :customized => Issue.find(2), :value => '-12') | |||
|
186 | CustomValue.create!(:custom_field => f, :customized => Issue.find(3), :value => '') | |||
|
187 | ||||
|
188 | query = Query.new(:name => '_') | |||
|
189 | query.add_filter("cf_#{f.id}", '=', ['-12']) | |||
|
190 | assert query.valid? | |||
|
191 | issues = find_issues_with_query(query) | |||
|
192 | assert_equal 1, issues.size | |||
|
193 | assert_equal 2, issues.first.id | |||
|
194 | end | |||
|
195 | ||||
182 | def test_operator_is_on_float_custom_field |
|
196 | def test_operator_is_on_float_custom_field | |
183 | f = IssueCustomField.create!(:name => 'filter', :field_format => 'float', :is_filter => true, :is_for_all => true) |
|
197 | f = IssueCustomField.create!(:name => 'filter', :field_format => 'float', :is_filter => true, :is_for_all => true) | |
184 | CustomValue.create!(:custom_field => f, :customized => Issue.find(1), :value => '7.3') |
|
198 | CustomValue.create!(:custom_field => f, :customized => Issue.find(1), :value => '7.3') | |
@@ -192,6 +206,20 class QueryTest < ActiveSupport::TestCase | |||||
192 | assert_equal 2, issues.first.id |
|
206 | assert_equal 2, issues.first.id | |
193 | end |
|
207 | end | |
194 |
|
208 | |||
|
209 | def test_operator_is_on_float_custom_field_should_accept_negative_value | |||
|
210 | f = IssueCustomField.create!(:name => 'filter', :field_format => 'float', :is_filter => true, :is_for_all => true) | |||
|
211 | CustomValue.create!(:custom_field => f, :customized => Issue.find(1), :value => '7.3') | |||
|
212 | CustomValue.create!(:custom_field => f, :customized => Issue.find(2), :value => '-12.7') | |||
|
213 | CustomValue.create!(:custom_field => f, :customized => Issue.find(3), :value => '') | |||
|
214 | ||||
|
215 | query = Query.new(:name => '_') | |||
|
216 | query.add_filter("cf_#{f.id}", '=', ['-12.7']) | |||
|
217 | assert query.valid? | |||
|
218 | issues = find_issues_with_query(query) | |||
|
219 | assert_equal 1, issues.size | |||
|
220 | assert_equal 2, issues.first.id | |||
|
221 | end | |||
|
222 | ||||
195 | def test_operator_is_on_multi_list_custom_field |
|
223 | def test_operator_is_on_multi_list_custom_field | |
196 | f = IssueCustomField.create!(:name => 'filter', :field_format => 'list', :is_filter => true, :is_for_all => true, |
|
224 | f = IssueCustomField.create!(:name => 'filter', :field_format => 'list', :is_filter => true, :is_for_all => true, | |
197 | :possible_values => ['value1', 'value2', 'value3'], :multiple => true) |
|
225 | :possible_values => ['value1', 'value2', 'value3'], :multiple => true) |
General Comments 0
You need to be logged in to leave comments.
Login now