diff options
Diffstat (limited to 'spec/serializers/group_link/project_group_link_entity_spec.rb')
-rw-r--r-- | spec/serializers/group_link/project_group_link_entity_spec.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/spec/serializers/group_link/project_group_link_entity_spec.rb b/spec/serializers/group_link/project_group_link_entity_spec.rb index f2a9f3a107a..1a8fcb2cfd3 100644 --- a/spec/serializers/group_link/project_group_link_entity_spec.rb +++ b/spec/serializers/group_link/project_group_link_entity_spec.rb @@ -18,6 +18,7 @@ RSpec.describe GroupLink::ProjectGroupLinkEntity do context 'when current user has `admin_project_member` permissions' do before do + allow(entity).to receive(:can?).with(current_user, :admin_project_group_link, project_group_link).and_return(false) allow(entity).to receive(:can?).with(current_user, :admin_project_member, project_group_link.project).and_return(true) end @@ -25,7 +26,33 @@ RSpec.describe GroupLink::ProjectGroupLinkEntity do json = entity.as_json expect(json[:can_update]).to be true + expect(json[:can_remove]).to be false + end + end + + context 'when current user is a group owner' do + before do + allow(entity).to receive(:can?).with(current_user, :admin_project_group_link, project_group_link).and_return(true) + allow(entity).to receive(:can?).with(current_user, :admin_project_member, project_group_link.project).and_return(false) + end + + it 'exposes `can_remove` as true' do + json = entity.as_json + expect(json[:can_remove]).to be true end end + + context 'when current user is not a group owner' do + before do + allow(entity).to receive(:can?).with(current_user, :admin_project_group_link, project_group_link).and_return(false) + allow(entity).to receive(:can?).with(current_user, :admin_project_member, project_group_link.project).and_return(false) + end + + it 'exposes `can_remove` as false' do + json = entity.as_json + + expect(json[:can_remove]).to be false + end + end end |