Ability to filter issues using project, author, assignee and target version custom fields (#8161).

Custom fields must be marked as "Used as filter" to show up in the filters list.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10164 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2012-08-07 19:17:59 +00:00
parent 599736aca7
commit 3676783052
8 changed files with 117 additions and 7 deletions
+45
View File
@@ -577,6 +577,51 @@ class QueryTest < ActiveSupport::TestCase
User.current = nil
end
def test_filter_on_project_custom_field
field = ProjectCustomField.create!(:name => 'Client', :is_filter => true, :field_format => 'string')
CustomValue.create!(:custom_field => field, :customized => Project.find(3), :value => 'Foo')
CustomValue.create!(:custom_field => field, :customized => Project.find(5), :value => 'Foo')
query = Query.new(:name => '_')
filter_name = "project.cf_#{field.id}"
assert_include filter_name, query.available_filters.keys
query.filters = {filter_name => {:operator => '=', :values => ['Foo']}}
assert_equal [3, 5], find_issues_with_query(query).map(&:project_id).uniq.sort
end
def test_filter_on_author_custom_field
field = UserCustomField.create!(:name => 'Client', :is_filter => true, :field_format => 'string')
CustomValue.create!(:custom_field => field, :customized => User.find(3), :value => 'Foo')
query = Query.new(:name => '_')
filter_name = "author.cf_#{field.id}"
assert_include filter_name, query.available_filters.keys
query.filters = {filter_name => {:operator => '=', :values => ['Foo']}}
assert_equal [3], find_issues_with_query(query).map(&:author_id).uniq.sort
end
def test_filter_on_assigned_to_custom_field
field = UserCustomField.create!(:name => 'Client', :is_filter => true, :field_format => 'string')
CustomValue.create!(:custom_field => field, :customized => User.find(3), :value => 'Foo')
query = Query.new(:name => '_')
filter_name = "assigned_to.cf_#{field.id}"
assert_include filter_name, query.available_filters.keys
query.filters = {filter_name => {:operator => '=', :values => ['Foo']}}
assert_equal [3], find_issues_with_query(query).map(&:assigned_to_id).uniq.sort
end
def test_filter_on_fixed_version_custom_field
field = VersionCustomField.create!(:name => 'Client', :is_filter => true, :field_format => 'string')
CustomValue.create!(:custom_field => field, :customized => Version.find(2), :value => 'Foo')
query = Query.new(:name => '_')
filter_name = "fixed_version.cf_#{field.id}"
assert_include filter_name, query.available_filters.keys
query.filters = {filter_name => {:operator => '=', :values => ['Foo']}}
assert_equal [2], find_issues_with_query(query).map(&:fixed_version_id).uniq.sort
end
def test_statement_should_be_nil_with_no_filters
q = Query.new(:name => '_')
q.filters = {}