diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-05-19 10:33:21 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-05-19 10:33:21 +0300 |
commit | 36a59d088eca61b834191dacea009677a96c052f (patch) | |
tree | e4f33972dab5d8ef79e3944a9f403035fceea43f /spec/models/member_spec.rb | |
parent | a1761f15ec2cae7c7f7bbda39a75494add0dfd6f (diff) |
Add latest changes from gitlab-org/gitlab@15-0-stable-eev15.0.0-rc42
Diffstat (limited to 'spec/models/member_spec.rb')
-rw-r--r-- | spec/models/member_spec.rb | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index 4ab17ee1e6d..286167c918f 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -383,6 +383,75 @@ RSpec.describe Member do end end + describe '.by_access_level' do + subject { described_class.by_access_level(access_levels) } + + context 'by owner' do + let(:access_levels) { [Gitlab::Access::OWNER] } + + it { is_expected.to include @owner } + it { is_expected.not_to include @maintainer } + it { is_expected.not_to include @invited_member } + it { is_expected.not_to include @accepted_invite_member } + it { is_expected.not_to include @requested_member } + it { is_expected.not_to include @accepted_requested_member } + it { is_expected.not_to include @blocked_maintainer } + it { is_expected.not_to include @blocked_developer } + end + + context 'by maintainer' do + let(:access_levels) { [Gitlab::Access::MAINTAINER] } + + it { is_expected.not_to include @owner } + it { is_expected.to include @maintainer } + it { is_expected.not_to include @invited_member } + it { is_expected.not_to include @accepted_invite_member } + it { is_expected.not_to include @requested_member } + it { is_expected.not_to include @accepted_requested_member } + it { is_expected.not_to include @blocked_maintainer } + it { is_expected.not_to include @blocked_developer } + end + + context 'by developer' do + let(:access_levels) { [Gitlab::Access::DEVELOPER] } + + it { is_expected.not_to include @owner } + it { is_expected.not_to include @maintainer } + it { is_expected.to include @invited_member } + it { is_expected.to include @accepted_invite_member } + it { is_expected.not_to include @requested_member } + it { is_expected.not_to include @accepted_requested_member } + it { is_expected.not_to include @blocked_maintainer } + it { is_expected.not_to include @blocked_developer } + end + + context 'by owner and maintainer' do + let(:access_levels) { [Gitlab::Access::OWNER, Gitlab::Access::MAINTAINER] } + + it { is_expected.to include @owner } + it { is_expected.to include @maintainer } + it { is_expected.not_to include @invited_member } + it { is_expected.not_to include @accepted_invite_member } + it { is_expected.not_to include @requested_member } + it { is_expected.not_to include @accepted_requested_member } + it { is_expected.not_to include @blocked_maintainer } + it { is_expected.not_to include @blocked_developer } + end + + context 'by owner, maintainer and developer' do + let(:access_levels) { [Gitlab::Access::OWNER, Gitlab::Access::MAINTAINER, Gitlab::Access::DEVELOPER] } + + it { is_expected.to include @owner } + it { is_expected.to include @maintainer } + it { is_expected.to include @invited_member } + it { is_expected.to include @accepted_invite_member } + it { is_expected.not_to include @requested_member } + it { is_expected.not_to include @accepted_requested_member } + it { is_expected.not_to include @blocked_maintainer } + it { is_expected.not_to include @blocked_developer } + end + end + describe '.developers' do subject { described_class.developers.to_a } @@ -582,6 +651,15 @@ RSpec.describe Member do expect(project.members.active_state).not_to include awaiting_project_member end end + + describe '.excluding_users' do + let_it_be(:active_group_member) { create(:group_member, group: group) } + + it 'excludes members with given user ids' do + expect(group.members.excluding_users([])).to include active_group_member + expect(group.members.excluding_users(active_group_member.user_id)).not_to include active_group_member + end + end end describe 'Delegate methods' do |