summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/query.rb2
-rw-r--r--test/unit/query_test.rb28
2 files changed, 29 insertions, 1 deletions
diff --git a/app/models/query.rb b/app/models/query.rb
index 6cafda780..9e8526645 100644
--- a/app/models/query.rb
+++ b/app/models/query.rb
@@ -924,7 +924,7 @@ class Query < ActiveRecord::Base
end
end
- if field == 'project_id' || (self.type == 'ProjectQuery' && field == 'id')
+ if field == 'project_id' || (self.type == 'ProjectQuery' && (field == 'id' || field == 'parent_id'))
if v.delete('mine')
v += User.current.memberships.map(&:project_id).map(&:to_s)
end
diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb
index 8099df3f8..d20fefce4 100644
--- a/test/unit/query_test.rb
+++ b/test/unit/query_test.rb
@@ -939,6 +939,34 @@ class QueryTest < ActiveSupport::TestCase
assert_not_include 'bookmarks', filter[:values].map{|v| v[1]}
end
+ def test_filter_project_parent_id_with_my_projects
+ User.current = User.find(1)
+ query = ProjectQuery.new(:name => '_')
+ filter = query.available_filters['parent_id']
+ assert_not_nil filter
+ assert_include 'mine', filter[:values].map{|v| v[1]}
+
+ query.filters = { 'parent_id' => {:operator => '=', :values => ['mine']}}
+ result = query.results_scope
+
+ my_projects = User.current.memberships.map(&:project_id)
+ assert_equal Project.where(parent_id: my_projects).ids, result.map(&:id).sort
+ end
+
+ def test_filter_project_parent_id_with_my_bookmarks
+ User.current = User.find(1)
+ query = ProjectQuery.new(:name => '_')
+ filter = query.available_filters['parent_id']
+ assert_not_nil filter
+ assert_include 'bookmarks', filter[:values].map{|v| v[1]}
+
+ query.filters = { 'parent_id' => {:operator => '=', :values => ['bookmarks']}}
+ result = query.results_scope
+
+ bookmarks = User.current.bookmarked_project_ids
+ assert_equal Project.where(parent_id: bookmarks).ids, result.map(&:id).sort
+ end
+
def test_filter_watched_issues
User.current = User.find(1)
query = IssueQuery.new(:name => '_', :filters => { 'watcher_id' => {:operator => '=', :values => ['me']}})