diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
commit | a5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 (patch) | |
tree | fb69158581673816a8cd895f9d352dcb3c678b1e /spec/services/groups/participants_service_spec.rb | |
parent | d16b2e8639e99961de6ddc93909f3bb5c1445ba1 (diff) |
Add latest changes from gitlab-org/gitlab@14-0-stable-eev14.0.0-rc42
Diffstat (limited to 'spec/services/groups/participants_service_spec.rb')
-rw-r--r-- | spec/services/groups/participants_service_spec.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/spec/services/groups/participants_service_spec.rb b/spec/services/groups/participants_service_spec.rb new file mode 100644 index 00000000000..750aead277f --- /dev/null +++ b/spec/services/groups/participants_service_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Groups::ParticipantsService do + describe '#group_members' do + let(:user) { create(:user) } + let(:parent_group) { create(:group) } + let(:group) { create(:group, parent: parent_group) } + let(:subgroup) { create(:group, parent: group) } + let(:subproject) { create(:project, group: subgroup) } + + it 'returns all members in parent groups, sub-groups, and sub-projects' do + parent_group.add_developer(create(:user)) + subgroup.add_developer(create(:user)) + subproject.add_developer(create(:user)) + + result = described_class.new(group, user).execute(nil) + + expected_users = (group.self_and_hierarchy.flat_map(&:users) + subproject.users) + .map { |user| user_to_autocompletable(user) } + + expect(expected_users.count).to eq(3) + expect(result).to include(*expected_users) + end + end + + def user_to_autocompletable(user) + { + type: user.class.name, + username: user.username, + name: user.name, + avatar_url: user.avatar_url, + availability: user&.status&.availability + } + end +end |