##// END OF EJS Templates
Filter on issue ID with between/lesser/greater operator does not work (#23596)....
Jean-Philippe Lang -
r15369:9f9232381ab6
parent child
Show More
@@ -466,11 +466,16 class IssueQuery < Query
466 end
466 end
467
467
468 def sql_for_issue_id_field(field, operator, value)
468 def sql_for_issue_id_field(field, operator, value)
469 ids = value.first.to_s.scan(/\d+/).map(&:to_i).join(",")
469 if operator == "="
470 if ids.present?
470 # accepts a comma separated list of ids
471 "#{Issue.table_name}.id IN (#{ids})"
471 ids = value.first.to_s.scan(/\d+/).map(&:to_i)
472 if ids.present?
473 "#{Issue.table_name}.id IN (#{ids.join(",")})"
474 else
475 "1=0"
476 end
472 else
477 else
473 "1=0"
478 sql_for_field("id", operator, value, Issue.table_name, "id")
474 end
479 end
475 end
480 end
476
481
@@ -235,7 +235,7 class QueryTest < ActiveSupport::TestCase
235 assert_equal 2, issues.first.id
235 assert_equal 2, issues.first.id
236 end
236 end
237
237
238 def test_operator_is_on_integer_should_accept_comma_separated_values
238 def test_operator_is_on_issue_id_should_accept_comma_separated_values
239 query = IssueQuery.new(:name => '_')
239 query = IssueQuery.new(:name => '_')
240 query.add_filter("issue_id", '=', ['1,3'])
240 query.add_filter("issue_id", '=', ['1,3'])
241 issues = find_issues_with_query(query)
241 issues = find_issues_with_query(query)
@@ -243,6 +243,14 class QueryTest < ActiveSupport::TestCase
243 assert_equal [1,3], issues.map(&:id).sort
243 assert_equal [1,3], issues.map(&:id).sort
244 end
244 end
245
245
246 def test_operator_between_on_issue_id_should_return_range
247 query = IssueQuery.new(:name => '_')
248 query.add_filter("issue_id", '><', ['2','3'])
249 issues = find_issues_with_query(query)
250 assert_equal 2, issues.size
251 assert_equal [2,3], issues.map(&:id).sort
252 end
253
246 def test_operator_is_on_integer_custom_field
254 def test_operator_is_on_integer_custom_field
247 f = IssueCustomField.create!(:name => 'filter', :field_format => 'int', :is_for_all => true, :is_filter => true, :trackers => Tracker.all)
255 f = IssueCustomField.create!(:name => 'filter', :field_format => 'int', :is_for_all => true, :is_filter => true, :trackers => Tracker.all)
248 CustomValue.create!(:custom_field => f, :customized => Issue.find(1), :value => '7')
256 CustomValue.create!(:custom_field => f, :customized => Issue.find(1), :value => '7')
General Comments 0
You need to be logged in to leave comments. Login now