Added a "Member of Role" to the issues filters. #5869
This filter will check an issue's assigned to field for users who have (or don't have) a specific Role(s). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4078 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
+67
-1
@@ -404,7 +404,29 @@ class QueryTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
context "'assigned_to_role' filter" do
|
||||
should "be present" do
|
||||
assert @query.available_filters.keys.include?("assigned_to_role")
|
||||
end
|
||||
|
||||
should "be an optional list" do
|
||||
assert_equal :list_optional, @query.available_filters["assigned_to_role"][:type]
|
||||
end
|
||||
|
||||
should "have a list of the Roles as values" do
|
||||
assert @query.available_filters["assigned_to_role"][:values].include?(['Manager',1])
|
||||
assert @query.available_filters["assigned_to_role"][:values].include?(['Developer',2])
|
||||
assert @query.available_filters["assigned_to_role"][:values].include?(['Reporter',3])
|
||||
end
|
||||
|
||||
should "not include the built in Roles as values" do
|
||||
assert ! @query.available_filters["assigned_to_role"][:values].include?(['Non member',4])
|
||||
assert ! @query.available_filters["assigned_to_role"][:values].include?(['Anonymous',5])
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context "#statement" do
|
||||
@@ -453,6 +475,50 @@ class QueryTest < ActiveSupport::TestCase
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
context "with 'assigned_to_role' filter" do
|
||||
setup do
|
||||
# No fixtures
|
||||
MemberRole.delete_all
|
||||
Member.delete_all
|
||||
Role.delete_all
|
||||
|
||||
@manager_role = Role.generate!(:name => 'Manager')
|
||||
@developer_role = Role.generate!(:name => 'Developer')
|
||||
|
||||
@project = Project.generate!
|
||||
@manager = User.generate!
|
||||
@developer = User.generate!
|
||||
@boss = User.generate!
|
||||
User.add_to_project(@manager, @project, @manager_role)
|
||||
User.add_to_project(@developer, @project, @developer_role)
|
||||
User.add_to_project(@boss, @project, [@manager_role, @developer_role])
|
||||
end
|
||||
|
||||
should "search assigned to for users with the Role" do
|
||||
@query = Query.new(:name => '_')
|
||||
@query.add_filter('assigned_to_role', '=', [@manager_role.id.to_s])
|
||||
|
||||
assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@boss.id}')"
|
||||
assert_find_issues_with_query_is_successful @query
|
||||
end
|
||||
|
||||
should "search assigned to for users not assigned to any Role (none)" do
|
||||
@query = Query.new(:name => '_')
|
||||
@query.add_filter('assigned_to_role', '!*', [''])
|
||||
|
||||
assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')"
|
||||
assert_find_issues_with_query_is_successful @query
|
||||
end
|
||||
|
||||
should "search assigned to for users assigned to any Role (all)" do
|
||||
@query = Query.new(:name => '_')
|
||||
@query.add_filter('assigned_to_role', '*', [''])
|
||||
|
||||
assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')"
|
||||
assert_find_issues_with_query_is_successful @query
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user