]> source.dussan.org Git - redmine.git/commitdiff
Merged r12058 from trunk (#14401).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 28 Jul 2013 20:45:16 +0000 (20:45 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 28 Jul 2013 20:45:16 +0000 (20:45 +0000)
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
test/unit/query_test.rb

index 5b818cc28bb98137bf2bef9c6e59bc2906c6f16b..470932549b82c9ce4bc5038686dd87bcce0c86e9 100644 (file)
@@ -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|
index f19a75924e915e3d96c24c8c524c7099140e7c95..10d6cf6c9d67efb974c7de122a504f9451d16d62 100644 (file)
@@ -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 = {}