From 5eeca35317de8d289362c6afad25a219ebf75117 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 28 Jul 2013 20:45:16 +0000 Subject: [PATCH] Merged r12058 from trunk (#14401). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.3-stable@12062 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/issue_query.rb | 5 ++--- test/unit/query_test.rb | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb index 5b818cc28..470932549 100644 --- a/app/models/issue_query.rb +++ b/app/models/issue_query.rb @@ -393,10 +393,9 @@ class IssueQuery < Query if relation_options[:sym] == field && !options[:reverse] sqls = [sql, sql_for_relations(field, operator, value, :reverse => true)] - sqls.join(["!", "!*", "!p"].include?(operator) ? " AND " : " OR ") - else - sql + sql = sqls.join(["!", "!*", "!p"].include?(operator) ? " AND " : " OR ") end + "(#{sql})" end IssueRelation::TYPES.keys.each do |relation_type| diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index f19a75924..10d6cf6c9 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -746,6 +746,21 @@ class QueryTest < ActiveSupport::TestCase assert_equal [1, 2, 3], find_issues_with_query(query).map(&:id).sort end + def test_filter_on_relations_should_not_ignore_other_filter + issue = Issue.generate! + issue1 = Issue.generate!(:status_id => 1) + issue2 = Issue.generate!(:status_id => 2) + IssueRelation.create!(:relation_type => "relates", :issue_from => issue, :issue_to => issue1) + IssueRelation.create!(:relation_type => "relates", :issue_from => issue, :issue_to => issue2) + + query = IssueQuery.new(:name => '_') + query.filters = { + "status_id" => {:operator => '=', :values => ['1']}, + "relates" => {:operator => '=', :values => [issue.id.to_s]} + } + assert_equal [issue1], find_issues_with_query(query) + end + def test_statement_should_be_nil_with_no_filters q = IssueQuery.new(:name => '_') q.filters = {}