@@ -467,10 +467,9 class IssueQuery < Query | |||
|
467 | 467 | |
|
468 | 468 | if relation_options[:sym] == field && !options[:reverse] |
|
469 | 469 | sqls = [sql, sql_for_relations(field, operator, value, :reverse => true)] |
|
470 | sqls.join(["!", "!*", "!p"].include?(operator) ? " AND " : " OR ") | |
|
471 | else | |
|
472 | sql | |
|
470 | sql = sqls.join(["!", "!*", "!p"].include?(operator) ? " AND " : " OR ") | |
|
473 | 471 | end |
|
472 | "(#{sql})" | |
|
474 | 473 | end |
|
475 | 474 | |
|
476 | 475 | IssueRelation::TYPES.keys.each do |relation_type| |
@@ -791,6 +791,21 class QueryTest < ActiveSupport::TestCase | |||
|
791 | 791 | assert_equal [1, 2, 3], find_issues_with_query(query).map(&:id).sort |
|
792 | 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 | 809 | def test_statement_should_be_nil_with_no_filters |
|
795 | 810 | q = IssueQuery.new(:name => '_') |
|
796 | 811 | q.filters = {} |
General Comments 0
You need to be logged in to leave comments.
Login now