Defect #25478 » fix-filter-related-to-non-open.diff
test/unit/query_test.rb | ||
---|---|---|
1100 | 1100 |
assert_include 2, ids |
1101 | 1101 |
end |
1102 | 1102 | |
1103 |
def test_filter_on_relations_with_no_open_issues
|
|
1103 |
def test_filter_on_blocked_by_no_open_issues
|
|
1104 | 1104 |
IssueRelation.delete_all |
1105 | 1105 |
# Issue 1 is blocked by 8, which is closed |
1106 | 1106 |
IssueRelation.create!(:relation_type => "blocked", :issue_from => Issue.find(1), :issue_to => Issue.find(8)) |
... | ... | |
1114 | 1114 |
assert_include 1, ids |
1115 | 1115 |
end |
1116 | 1116 | |
1117 |
def test_filter_on_related_with_no_open_issues |
|
1118 |
IssueRelation.delete_all |
|
1119 |
# Issue 1 is blocked by 8, which is closed |
|
1120 |
IssueRelation.create!(relation_type: 'relates', issue_from: Issue.find(1), issue_to: Issue.find(8)) |
|
1121 |
# Issue 2 is blocked by 3, which is open |
|
1122 |
IssueRelation.create!(relation_type: 'relates', issue_from: Issue.find(2), issue_to: Issue.find(3)) |
|
1123 | ||
1124 |
query = IssueQuery.new(:name => '_') |
|
1125 |
query.filters = { 'relates' => { operator: '!o', values: [''] } } |
|
1126 |
ids = find_issues_with_query(query).map(&:id) |
|
1127 |
assert_equal [], ids & [2] |
|
1128 |
assert_include 1, ids |
|
1129 |
end |
|
1130 | ||
1117 | 1131 |
def test_filter_on_relations_with_no_issues |
1118 | 1132 |
IssueRelation.delete_all |
1119 | 1133 |
IssueRelation.create!(:relation_type => "relates", :issue_from => Issue.find(1), :issue_to => Issue.find(2)) |
1120 |
- |
app/models/issue_query.rb | ||
---|---|---|
553 | 553 | |
554 | 554 |
if relation_options[:sym] == field && !options[:reverse] |
555 | 555 |
sqls = [sql, sql_for_relations(field, operator, value, :reverse => true)] |
556 |
sql = sqls.join(["!", "!*", "!p"].include?(operator) ? " AND " : " OR ") |
|
556 |
sql = sqls.join(["!", "!*", "!p", '!o'].include?(operator) ? " AND " : " OR ")
|
|
557 | 557 |
end |
558 | 558 |
"(#{sql})" |
559 | 559 |
end |