##// END OF EJS Templates
Filtering issues on "related to" may ignore other filters (#14401)....
Jean-Philippe Lang -
r11828:4a70a319c5e6
parent child
Show More
@@ -467,10 +467,9 class IssueQuery < Query
467
467
468 if relation_options[:sym] == field && !options[:reverse]
468 if relation_options[:sym] == field && !options[:reverse]
469 sqls = [sql, sql_for_relations(field, operator, value, :reverse => true)]
469 sqls = [sql, sql_for_relations(field, operator, value, :reverse => true)]
470 sqls.join(["!", "!*", "!p"].include?(operator) ? " AND " : " OR ")
470 sql = sqls.join(["!", "!*", "!p"].include?(operator) ? " AND " : " OR ")
471 else
472 sql
473 end
471 end
472 "(#{sql})"
474 end
473 end
475
474
476 IssueRelation::TYPES.keys.each do |relation_type|
475 IssueRelation::TYPES.keys.each do |relation_type|
@@ -791,6 +791,21 class QueryTest < ActiveSupport::TestCase
791 assert_equal [1, 2, 3], find_issues_with_query(query).map(&:id).sort
791 assert_equal [1, 2, 3], find_issues_with_query(query).map(&:id).sort
792 end
792 end
793
793
794 def test_filter_on_relations_should_not_ignore_other_filter
795 issue = Issue.generate!
796 issue1 = Issue.generate!(:status_id => 1)
797 issue2 = Issue.generate!(:status_id => 2)
798 IssueRelation.create!(:relation_type => "relates", :issue_from => issue, :issue_to => issue1)
799 IssueRelation.create!(:relation_type => "relates", :issue_from => issue, :issue_to => issue2)
800
801 query = IssueQuery.new(:name => '_')
802 query.filters = {
803 "status_id" => {:operator => '=', :values => ['1']},
804 "relates" => {:operator => '=', :values => [issue.id.to_s]}
805 }
806 assert_equal [issue1], find_issues_with_query(query)
807 end
808
794 def test_statement_should_be_nil_with_no_filters
809 def test_statement_should_be_nil_with_no_filters
795 q = IssueQuery.new(:name => '_')
810 q = IssueQuery.new(:name => '_')
796 q.filters = {}
811 q.filters = {}
General Comments 0
You need to be logged in to leave comments. Login now