diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-14 12:09:21 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-14 12:09:21 +0300 |
commit | 1fc72cb8765dab466da8555b70eb744a53a74a80 (patch) | |
tree | c74b37a2056ff89781aee51b2b9ff5c0560a2fb4 /spec/services/achievements | |
parent | 4fc8a5035217a603a5af54aab09bb7c1bfea7626 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services/achievements')
-rw-r--r-- | spec/services/achievements/destroy_user_achievement_service_spec.rb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/spec/services/achievements/destroy_user_achievement_service_spec.rb b/spec/services/achievements/destroy_user_achievement_service_spec.rb new file mode 100644 index 00000000000..c5ff43fa1b2 --- /dev/null +++ b/spec/services/achievements/destroy_user_achievement_service_spec.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Achievements::DestroyUserAchievementService, feature_category: :user_profile do + describe '#execute' do + let_it_be(:maintainer) { create(:user) } + let_it_be(:owner) { create(:user) } + let_it_be(:group) { create(:group) } + + let_it_be(:achievement) { create(:achievement, namespace: group) } + let_it_be(:user_achievement) { create(:user_achievement, achievement: achievement) } + + subject(:response) { described_class.new(current_user, user_achievement).execute } + + before_all do + group.add_maintainer(maintainer) + group.add_owner(owner) + end + + context 'when user does not have permission' do + let(:current_user) { maintainer } + + it 'returns an error' do + expect(response).to be_error + expect(response.message).to match_array( + ['You have insufficient permissions to delete this user achievement']) + end + end + + context 'when user has permission' do + let(:current_user) { owner } + + it 'deletes the achievement' do + expect(response).to be_success + expect(Achievements::UserAchievement.find_by(id: user_achievement.id)).to be_nil + end + end + end +end |