diff options
author | Rémy Coutable <remy@rymai.me> | 2016-09-21 14:40:02 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-09-21 14:40:02 +0000 |
commit | 94bb16aeabb198b64f07890d8d0073890b7e5758 (patch) | |
tree | 7c6d1403b87989d6af3e721fbba18d21579199f2 /spec | |
parent | 67b6dad3667a1e3b0a01c416ad5dbea2c19cdbaf (diff) | |
parent | e2c2bd69f2ccb6b8df41685b48259c4cde91eb8b (diff) | |
download | gitlab-ce-94bb16aeabb198b64f07890d8d0073890b7e5758.tar.gz |
Merge branch 'rs-simplify-fetch_members' into 'master'
Simplify ProjectTeam#fetch_members to satisfy flog
## What does this MR do?
- Add specs for ProjectTeam#fetch_members
- Simplify ProjectTeam#fetch_members to satisfy flog
## What are the relevant issue numbers?
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/22200
See merge request !6431
Diffstat (limited to 'spec')
-rw-r--r-- | spec/factories/group_members.rb | 6 | ||||
-rw-r--r-- | spec/models/project_team_spec.rb | 62 |
2 files changed, 68 insertions, 0 deletions
diff --git a/spec/factories/group_members.rb b/spec/factories/group_members.rb index 2044ebec09a..795df5dfda9 100644 --- a/spec/factories/group_members.rb +++ b/spec/factories/group_members.rb @@ -3,5 +3,11 @@ FactoryGirl.define do access_level { GroupMember::OWNER } group user + + trait(:guest) { access_level GroupMember::GUEST } + trait(:reporter) { access_level GroupMember::REPORTER } + trait(:developer) { access_level GroupMember::DEVELOPER } + trait(:master) { access_level GroupMember::MASTER } + trait(:owner) { access_level GroupMember::OWNER } end end diff --git a/spec/models/project_team_spec.rb b/spec/models/project_team_spec.rb index 5eaf0d3b7a6..f979d66c88c 100644 --- a/spec/models/project_team_spec.rb +++ b/spec/models/project_team_spec.rb @@ -73,6 +73,68 @@ describe ProjectTeam, models: true do end end + describe '#fetch_members' do + context 'personal project' do + let(:project) { create(:empty_project) } + + it 'returns project members' do + user = create(:user) + project.team << [user, :guest] + + expect(project.team.members).to contain_exactly(user) + end + + it 'returns project members of a specified level' do + user = create(:user) + project.team << [user, :reporter] + + expect(project.team.guests).to be_empty + expect(project.team.reporters).to contain_exactly(user) + end + + it 'returns invited members of a group' do + group_member = create(:group_member) + + project.project_group_links.create!( + group: group_member.group, + group_access: Gitlab::Access::GUEST + ) + + expect(project.team.members).to contain_exactly(group_member.user) + end + + it 'returns invited members of a group of a specified level' do + group_member = create(:group_member) + + project.project_group_links.create!( + group: group_member.group, + group_access: Gitlab::Access::REPORTER + ) + + expect(project.team.guests).to be_empty + expect(project.team.reporters).to contain_exactly(group_member.user) + end + end + + context 'group project' do + let(:group) { create(:group) } + let(:project) { create(:empty_project, group: group) } + + it 'returns project members' do + group_member = create(:group_member, group: group) + + expect(project.team.members).to contain_exactly(group_member.user) + end + + it 'returns project members of a specified level' do + group_member = create(:group_member, :reporter, group: group) + + expect(project.team.guests).to be_empty + expect(project.team.reporters).to contain_exactly(group_member.user) + end + end + end + describe '#find_member' do context 'personal project' do let(:project) { create(:empty_project) } |