diff options
Diffstat (limited to 'spec/models/project_group_link_spec.rb')
-rw-r--r-- | spec/models/project_group_link_spec.rb | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/spec/models/project_group_link_spec.rb b/spec/models/project_group_link_spec.rb index f141b8e83d6..bfbb7c91f47 100644 --- a/spec/models/project_group_link_spec.rb +++ b/spec/models/project_group_link_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe ProjectGroupLink do +RSpec.describe ProjectGroupLink, feature_category: :groups_and_projects do describe "Associations" do it { is_expected.to belong_to(:group) } it { is_expected.to belong_to(:project) } @@ -18,6 +18,7 @@ RSpec.describe ProjectGroupLink do it { is_expected.to validate_uniqueness_of(:group_id).scoped_to(:project_id).with_message(/already shared/) } it { is_expected.to validate_presence_of(:group) } it { is_expected.to validate_presence_of(:group_access) } + it { is_expected.to validate_inclusion_of(:group_access).in_array(Gitlab::Access.all_values) } it "doesn't allow a project to be shared with the group it is in" do project_group_link.group = group @@ -30,12 +31,6 @@ RSpec.describe ProjectGroupLink do expect(project_group_link).not_to be_valid end - - it 'does not allow a project to be shared with `OWNER` access level' do - project_group_link.group_access = Gitlab::Access::OWNER - - expect(project_group_link).not_to be_valid - end end describe 'scopes' do @@ -62,4 +57,27 @@ RSpec.describe ProjectGroupLink do it { expect(described_class.search(group.name)).to eq([project_group_link]) } it { expect(described_class.search('not-a-group-name')).to be_empty } end + + describe '#owner_access?' do + it 'returns true for links with OWNER access' do + link = create(:project_group_link, :owner) + + expect(link.owner_access?).to eq(true) + end + + it 'returns false for links without OWNER access' do + link = create(:project_group_link, :guest) + + expect(link.owner_access?).to eq(false) + end + end + + describe '#human_access' do + it 'delegates to Gitlab::Access' do + project_group_link = create(:project_group_link, :reporter) + expect(Gitlab::Access).to receive(:human_access).with(project_group_link.group_access).and_call_original + + expect(project_group_link.human_access).to eq('Reporter') + end + end end |