Add type property to project autocomplete members
This commit is contained in:
parent
1cd080c71a
commit
aa464800b8
|
@ -11,7 +11,7 @@ module Users
|
|||
def noteable_owner
|
||||
return [] unless noteable && noteable.author.present?
|
||||
|
||||
[as_hash(noteable.author)]
|
||||
[user_as_hash(noteable.author)]
|
||||
end
|
||||
|
||||
def participants_in_noteable
|
||||
|
@ -23,21 +23,24 @@ module Users
|
|||
|
||||
def sorted(users)
|
||||
users.uniq.to_a.compact.sort_by(&:username).map do |user|
|
||||
as_hash(user)
|
||||
user_as_hash(user)
|
||||
end
|
||||
end
|
||||
|
||||
def groups
|
||||
current_user.authorized_groups.sort_by(&:path).map do |group|
|
||||
count = group.users.count
|
||||
{ username: group.full_path, name: group.full_name, count: count, avatar_url: group.avatar_url }
|
||||
group_as_hash(group)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def as_hash(user)
|
||||
{ username: user.username, name: user.name, avatar_url: user.avatar_url }
|
||||
def user_as_hash(user)
|
||||
{ type: user.class.name, username: user.username, name: user.name, avatar_url: user.avatar_url }
|
||||
end
|
||||
|
||||
def group_as_hash(group)
|
||||
{ type: group.class.name, username: group.full_path, name: group.full_name, avatar_url: group.avatar_url, count: group.users.count }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe Projects::AutocompleteSourcesController do
|
||||
set(:group) { create(:group) }
|
||||
set(:project) { create(:project, namespace: group) }
|
||||
set(:issue) { create(:issue, project: project) }
|
||||
set(:user) { create(:user) }
|
||||
|
||||
describe 'GET members' do
|
||||
before do
|
||||
group.add_owner(user)
|
||||
sign_in(user)
|
||||
end
|
||||
|
||||
it 'returns an array of member object' do
|
||||
get :members, format: :json, params: { namespace_id: group.path, project_id: project.path, type: issue.class.name, type_id: issue.id }
|
||||
|
||||
all = json_response.find {|member| member["username"] == 'all'}
|
||||
the_group = json_response.find {|member| member["username"] == group.full_path}
|
||||
the_user = json_response.find {|member| member["username"] == user.username}
|
||||
|
||||
expect(all.symbolize_keys).to include(username: 'all',
|
||||
name: 'All Project and Group Members',
|
||||
count: 1)
|
||||
|
||||
expect(the_group.symbolize_keys).to include(type: group.class.name,
|
||||
name: group.full_name,
|
||||
avatar_url: group.avatar_url,
|
||||
count: 1)
|
||||
|
||||
expect(the_user.symbolize_keys).to include(type: user.class.name,
|
||||
name: user.name,
|
||||
avatar_url: user.avatar_url)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue