summaryrefslogtreecommitdiffstats
path: root/test/unit
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2015-06-13 10:56:44 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2015-06-13 10:56:44 +0000
commit98f2b30ac5871b684a6690be6449283926f3ef2a (patch)
tree017d0b458c1c70bd21ba2dea64d8d04186ec85fc /test/unit
parent3077ed8d3a79fc613f31ecd47418fcec291cfd18 (diff)
downloadredmine-98f2b30ac5871b684a6690be6449283926f3ef2a.tar.gz
redmine-98f2b30ac5871b684a6690be6449283926f3ef2a.zip
Adds issue filters on parent/subtasks (#6118).
git-svn-id: http://svn.redmine.org/redmine/trunk@14304 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/query_test.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb
index fdddba8cc..64cb8d151 100644
--- a/test/unit/query_test.rb
+++ b/test/unit/query_test.rb
@@ -879,6 +879,46 @@ class QueryTest < ActiveSupport::TestCase
assert_equal [issue1], find_issues_with_query(query)
end
+ def test_filter_on_parent
+ Issue.delete_all
+ parent = Issue.generate_with_descendants!
+
+
+ query = IssueQuery.new(:name => '_')
+ query.filters = {"parent_id" => {:operator => '=', :values => [parent.id.to_s]}}
+ assert_equal parent.children.map(&:id).sort, find_issues_with_query(query).map(&:id).sort
+
+ query.filters = {"parent_id" => {:operator => '~', :values => [parent.id.to_s]}}
+ assert_equal parent.descendants.map(&:id).sort, find_issues_with_query(query).map(&:id).sort
+
+ query.filters = {"parent_id" => {:operator => '*', :values => ['']}}
+ assert_equal parent.descendants.map(&:id).sort, find_issues_with_query(query).map(&:id).sort
+
+ query.filters = {"parent_id" => {:operator => '!*', :values => ['']}}
+ assert_equal [parent.id], find_issues_with_query(query).map(&:id).sort
+ end
+
+ def test_filter_on_child
+ Issue.delete_all
+ parent = Issue.generate_with_descendants!
+ child, leaf = parent.children.sort_by(&:id)
+ grandchild = child.children.first
+
+
+ query = IssueQuery.new(:name => '_')
+ query.filters = {"child_id" => {:operator => '=', :values => [grandchild.id.to_s]}}
+ assert_equal [child.id], find_issues_with_query(query).map(&:id).sort
+
+ query.filters = {"child_id" => {:operator => '~', :values => [grandchild.id.to_s]}}
+ assert_equal [parent, child].map(&:id).sort, find_issues_with_query(query).map(&:id).sort
+
+ query.filters = {"child_id" => {:operator => '*', :values => ['']}}
+ assert_equal [parent, child].map(&:id).sort, find_issues_with_query(query).map(&:id).sort
+
+ query.filters = {"child_id" => {:operator => '!*', :values => ['']}}
+ assert_equal [grandchild, leaf].map(&:id).sort, find_issues_with_query(query).map(&:id).sort
+ end
+
def test_statement_should_be_nil_with_no_filters
q = IssueQuery.new(:name => '_')
q.filters = {}