@principal ||= begin
principals = []
if project
- principals += project.principals.visible
+ principals += Principal.member_of(project).visible
unless project.leaf?
principals += Principal.member_of(project.descendants.visible).visible
end
def author_values
author_values = []
author_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged?
- author_values += users.collect{|s| [s.name, s.id.to_s] }
+ author_values += users.sort_by(&:status).collect{|s| [s.name, s.id.to_s, l("status_#{User::LABEL_BY_STATUS[s.status]}")] }
author_values
end
def assigned_to_values
assigned_to_values = []
assigned_to_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged?
- assigned_to_values += (Setting.issue_group_assignment? ? principals : users).collect{|s| [s.name, s.id.to_s] }
+ assigned_to_values += (Setting.issue_group_assignment? ? principals : users).sort_by(&:status).collect{|s| [s.name, s.id.to_s, l("status_#{User::LABEL_BY_STATUS[s.status]}")] }
assigned_to_values
end
assert_equal 4, json.count
assert_include ["Private child of eCookbook","5"], json
end
+
+ def test_assignee_filter_should_return_active_and_locked_users_grouped_by_status
+ @request.session[:user_id] = 1
+ get :filter, :params => {
+ :project_id => 1,
+ :type => 'IssueQuery',
+ :name => 'assigned_to_id'
+ }
+ assert_response :success
+ assert_equal 'application/json', response.content_type
+ json = ActiveSupport::JSON.decode(response.body)
+
+ assert_equal 6, json.count
+ # "me" value should not be grouped
+ assert_include ["<< me >>", "me"], json
+ assert_include ["Dave Lopper", "3", "active"], json
+ assert_include ["Dave2 Lopper2", "5", "locked"], json
+ end
+
+ def test_author_filter_should_return_active_and_locked_users_grouped_by_status
+ @request.session[:user_id] = 1
+ get :filter, :params => {
+ :project_id => 1,
+ :type => 'IssueQuery',
+ :name => 'author_id'
+ }
+ assert_response :success
+ assert_equal 'application/json', response.content_type
+ json = ActiveSupport::JSON.decode(response.body)
+
+ assert_equal 6, json.count
+ # "me" value should not be grouped
+ assert_include ["<< me >>", "me"], json
+ assert_include ["Dave Lopper", "3", "active"], json
+ assert_include ["Dave2 Lopper2", "5", "locked"], json
+ end
+
+ def test_user_filter_should_return_active_and_locked_users_grouped_by_status
+ @request.session[:user_id] = 1
+ get :filter, :params => {
+ :project_id => 1,
+ :type => 'TimeEntryQuery',
+ :name => 'user_id'
+ }
+ assert_response :success
+ assert_equal 'application/json', response.content_type
+ json = ActiveSupport::JSON.decode(response.body)
+
+ assert_equal 6, json.count
+ # "me" value should not be grouped
+ assert_include ["<< me >>", "me"], json
+ assert_include ["Dave Lopper", "3", "active"], json
+ assert_include ["Dave2 Lopper2", "5", "locked"], json
+ end
end
assert_equal expected.map(&:id).sort, Principal.visible(user).pluck(:id).sort
end
- def test_member_of_scope_should_return_the_union_of_all_members
+ def test_member_of_scope_should_return_the_union_of_all_active_and_locked_members
projects = Project.find([1])
- assert_equal [3, 2], Principal.member_of(projects).sort.map(&:id)
+ assert_equal [3, 5, 2], Principal.member_of(projects).sort.map(&:id)
projects = Project.find([1, 2])
- assert_equal [3, 2, 8, 11], Principal.member_of(projects).sort.map(&:id)
+ assert_equal [3, 5, 2, 8, 11], Principal.member_of(projects).sort.map(&:id)
end
def test_member_of_scope_should_be_empty_for_no_projects