mirror of
https://github.com/meineerde/redmine.git
synced 2026-02-01 03:57:15 +00:00
Fix "Any searchable text" filter doesn't support the project filter with the value "my projects" or "my bookmarks" (#38402).
git-svn-id: https://svn.redmine.org/redmine/trunk@22203 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
0e19e183b1
commit
fae39a9542
@ -784,8 +784,16 @@ class IssueQuery < Query
|
||||
if project
|
||||
projects = project_scope.where(project_statement)
|
||||
elsif has_filter?('project_id')
|
||||
case values_for('project_id').first
|
||||
when 'mine'
|
||||
project_ids = User.current.projects.ids
|
||||
when 'bookmarks'
|
||||
project_ids = User.current.bookmarked_project_ids
|
||||
else
|
||||
project_ids = values_for('project_id')
|
||||
end
|
||||
projects = project_scope.where(
|
||||
sql_for_field('project_id', operator_for('project_id'), values_for('project_id'), Project.table_name, 'id')
|
||||
sql_for_field('project_id', operator_for('project_id'), project_ids, Project.table_name, 'id')
|
||||
)
|
||||
else
|
||||
projects = nil
|
||||
|
||||
@ -1041,6 +1041,36 @@ class QueryTest < ActiveSupport::TestCase
|
||||
assert_equal [1, 3], result.map(&:id).sort
|
||||
end
|
||||
|
||||
def test_filter_any_searchable_with_my_projects
|
||||
# This user's project is ecookbook only
|
||||
User.current = User.find_by(login: 'dlopper')
|
||||
query = IssueQuery.new(
|
||||
:name => '_',
|
||||
:filters => {
|
||||
'any_searchable' => {:operator => '~', :values => ['issue']},
|
||||
'project_id' => {:operator => '=', :values => ['mine']}
|
||||
}
|
||||
)
|
||||
result = find_issues_with_query(query)
|
||||
assert_equal [7, 8, 11, 12], result.map(&:id).sort
|
||||
result.each {|issue| assert_equal 1, issue.project_id}
|
||||
end
|
||||
|
||||
def test_filter_any_searchable_with_my_bookmarks
|
||||
# This user bookmarks two projects, ecookbook and private-child
|
||||
User.current = User.find(1)
|
||||
query = IssueQuery.new(
|
||||
:name => '_',
|
||||
:filters => {
|
||||
'any_searchable' => {:operator => '~', :values => ['issue']},
|
||||
'project_id' => {:operator => '=', :values => ['bookmarks']}
|
||||
}
|
||||
)
|
||||
result = find_issues_with_query(query)
|
||||
assert_equal [6, 7, 8, 9, 10, 11, 12], result.map(&:id).sort
|
||||
result.each {|issue| assert_includes [1, 5], issue.project_id}
|
||||
end
|
||||
|
||||
def test_filter_updated_by
|
||||
user = User.generate!
|
||||
Journal.create!(:user_id => user.id, :journalized => Issue.find(2), :notes => 'Notes')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user