@@ -393,10 +393,9 class IssueQuery < Query | |||
|
393 | 393 | |
|
394 | 394 | if relation_options[:sym] == field && !options[:reverse] |
|
395 | 395 | sqls = [sql, sql_for_relations(field, operator, value, :reverse => true)] |
|
396 | sqls.join(["!", "!*", "!p"].include?(operator) ? " AND " : " OR ") | |
|
397 | else | |
|
398 | sql | |
|
396 | sql = sqls.join(["!", "!*", "!p"].include?(operator) ? " AND " : " OR ") | |
|
399 | 397 | end |
|
398 | "(#{sql})" | |
|
400 | 399 | end |
|
401 | 400 | |
|
402 | 401 | IssueRelation::TYPES.keys.each do |relation_type| |
@@ -746,6 +746,21 class QueryTest < ActiveSupport::TestCase | |||
|
746 | 746 | assert_equal [1, 2, 3], find_issues_with_query(query).map(&:id).sort |
|
747 | 747 | end |
|
748 | 748 | |
|
749 | def test_filter_on_relations_should_not_ignore_other_filter | |
|
750 | issue = Issue.generate! | |
|
751 | issue1 = Issue.generate!(:status_id => 1) | |
|
752 | issue2 = Issue.generate!(:status_id => 2) | |
|
753 | IssueRelation.create!(:relation_type => "relates", :issue_from => issue, :issue_to => issue1) | |
|
754 | IssueRelation.create!(:relation_type => "relates", :issue_from => issue, :issue_to => issue2) | |
|
755 | ||
|
756 | query = IssueQuery.new(:name => '_') | |
|
757 | query.filters = { | |
|
758 | "status_id" => {:operator => '=', :values => ['1']}, | |
|
759 | "relates" => {:operator => '=', :values => [issue.id.to_s]} | |
|
760 | } | |
|
761 | assert_equal [issue1], find_issues_with_query(query) | |
|
762 | end | |
|
763 | ||
|
749 | 764 | def test_statement_should_be_nil_with_no_filters |
|
750 | 765 | q = IssueQuery.new(:name => '_') |
|
751 | 766 | q.filters = {} |
General Comments 0
You need to be logged in to leave comments.
Login now