diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb index 155462c64..28f670774 100644 --- a/app/models/issue_query.rb +++ b/app/models/issue_query.rb @@ -684,4 +684,14 @@ class IssueQuery < Query joins.any? ? joins.join(' ') : nil end + + def validate_query_filters + super + + idx_issue_id = errors[:base].index{|message| /\A#{label_for('issue_id')}\s/.match?(message)} + return unless idx_issue_id + return if values_for('issue_id').any?{|v| v.blank? || !/\A[#]?\d+(\s*,\s*[#]?\d+)*\z/.match?(v)} + + errors[:base].delete_at(idx_issue_id) + end end diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index 9a8bb3c84..a50247404 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -273,11 +273,17 @@ class QueryTest < ActiveSupport::TestCase end def test_operator_is_on_issue_id_should_accept_comma_separated_values - query = IssueQuery.new(:name => '_') - query.add_filter("issue_id", '=', ['1,3']) - issues = find_issues_with_query(query) - assert_equal 2, issues.size - assert_equal [1,3], issues.map(&:id).sort + [ + ['1,3'], ['#1,#3'], ['1, 3'] + ].each do |issue_ids| + query = IssueQuery.new(:name => '_') + query.add_filter('issue_id', '=', issue_ids) + assert query.valid?, query.errors.full_messages + + issues = find_issues_with_query(query) + assert_equal 2, issues.size + assert_equal [1, 3], issues.map(&:id).sort + end end def test_operator_is_on_parent_id_should_accept_comma_separated_values