Feature #37167 ยป 0001-rest-api-filter-issues-by-multiple-tracker-ids.patch
app/models/issue_query.rb | ||
---|---|---|
709 | 709 |
end |
710 | 710 |
end |
711 | 711 | |
712 |
def sql_for_tracker_id_field(field, operator, value) |
|
713 |
if operator == "=" |
|
714 |
# accepts a comma separated list of ids |
|
715 |
ids = value.join(",").scan(/\d+/).map(&:to_i) |
|
716 |
if ids.present? |
|
717 |
"tracker_id IN (#{ids.join(",")})" |
|
718 |
else |
|
719 |
"1=0" |
|
720 |
end |
|
721 |
else |
|
722 |
sql_for_field("tracker_id", operator, value, Issue.table_name, "tracker_id") |
|
723 |
end |
|
724 |
end |
|
725 | ||
712 | 726 |
def sql_for_relations(field, operator, value, options={}) |
713 | 727 |
relation_options = IssueRelation::TYPES[field] |
714 | 728 |
return relation_options unless relation_options |
test/functional/issues_controller_test.rb | ||
---|---|---|
227 | 227 |
}, |
228 | 228 |
'tracker_id' => { |
229 | 229 |
'3' => {:op => '=', :values => ['3']}, |
230 |
'=3' => {:op => '=', :values => ['3']} |
|
230 |
'=3' => {:op => '=', :values => ['3']}, |
|
231 |
'=1,2,3' => {:op => '=', :values => ['1,2,3']} |
|
231 | 232 |
}, |
232 | 233 |
'start_date' => { |
233 | 234 |
'2011-10-12' => {:op => '=', :values => ['2011-10-12']}, |
test/unit/query_test.rb | ||
---|---|---|
769 | 769 |
query.statement |
770 | 770 |
end |
771 | 771 | |
772 |
def test_filter_on_tracker_id |
|
773 |
query = IssueQuery.new(:name => '_') |
|
774 | ||
775 |
query.filters = {'tracker_id' => {:operator => '=', :values => ['1']}} |
|
776 |
assert_equal 13, find_issues_with_query(query).size |
|
777 | ||
778 |
query.filters = {'tracker_id' => {:operator => '=', :values => ['2']}} |
|
779 |
assert_equal 1, find_issues_with_query(query).size |
|
780 | ||
781 |
query.filters = {'tracker_id' => {:operator => '=', :values => ['3']}} |
|
782 |
assert_equal 0, find_issues_with_query(query).size |
|
783 | ||
784 |
query.filters = {'tracker_id' => {:operator => '=', :values => ['1,2,3']}} |
|
785 |
assert_equal 14, find_issues_with_query(query).size |
|
786 |
end |
|
787 | ||
772 | 788 |
def test_filter_assigned_to_me |
773 | 789 |
user = User.find(2) |
774 | 790 |
group = Group.find(10) |