##// END OF EJS Templates
Fixed: Can't filter for negative numeric custom field (#11307)....
Jean-Philippe Lang -
r9725:d00ba6d2bb7c
parent child
Show More
@@ -174,9 +174,9 class Query < ActiveRecord::Base
174 174 if values_for(field)
175 175 case type_for(field)
176 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 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 180 when :date, :date_past
181 181 case operator_for(field)
182 182 when "=", ">=", "<=", "><"
@@ -179,6 +179,20 class QueryTest < ActiveSupport::TestCase
179 179 assert_equal 2, issues.first.id
180 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 196 def test_operator_is_on_float_custom_field
183 197 f = IssueCustomField.create!(:name => 'filter', :field_format => 'float', :is_filter => true, :is_for_all => true)
184 198 CustomValue.create!(:custom_field => f, :customized => Issue.find(1), :value => '7.3')
@@ -192,6 +206,20 class QueryTest < ActiveSupport::TestCase
192 206 assert_equal 2, issues.first.id
193 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 223 def test_operator_is_on_multi_list_custom_field
196 224 f = IssueCustomField.create!(:name => 'filter', :field_format => 'list', :is_filter => true, :is_for_all => true,
197 225 :possible_values => ['value1', 'value2', 'value3'], :multiple => true)
General Comments 0
You need to be logged in to leave comments. Login now