diff options
Diffstat (limited to 'spec/services/merge_requests/update_assignees_service_spec.rb')
-rw-r--r-- | spec/services/merge_requests/update_assignees_service_spec.rb | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/spec/services/merge_requests/update_assignees_service_spec.rb b/spec/services/merge_requests/update_assignees_service_spec.rb index 3a0b17c2768..2d80d75a262 100644 --- a/spec/services/merge_requests/update_assignees_service_spec.rb +++ b/spec/services/merge_requests/update_assignees_service_spec.rb @@ -36,6 +36,20 @@ RSpec.describe MergeRequests::UpdateAssigneesService do service.execute(merge_request) end + shared_examples 'it updates and enqueues the job' do + it 'correctly updates the MR and enqueues the job' do + expect_next(MergeRequests::HandleAssigneesChangeService, project: project, current_user: user) do |service| + expect(service) + .to receive(:async_execute).with(merge_request, [user3], execute_hooks: true) + end + + expect { update_merge_request } + .to change { merge_request.reload.assignees }.from([user3]).to(new_users) + .and change(merge_request, :updated_at) + .and change(merge_request, :updated_by).to(user) + end + end + shared_examples 'removing all assignees' do it 'removes all assignees' do expect(update_merge_request).to have_attributes(assignees: be_empty, errors: be_none) @@ -73,16 +87,8 @@ RSpec.describe MergeRequests::UpdateAssigneesService do it_behaves_like 'removing all assignees' end - it 'updates the MR, and queues the more expensive work for later' do - expect_next(MergeRequests::HandleAssigneesChangeService, project: project, current_user: user) do |service| - expect(service) - .to receive(:async_execute).with(merge_request, [user3], execute_hooks: true) - end - - expect { update_merge_request } - .to change { merge_request.reload.assignees }.from([user3]).to([user2]) - .and change(merge_request, :updated_at) - .and change(merge_request, :updated_by).to(user) + it_behaves_like 'it updates and enqueues the job' do + let(:new_users) { [user2] } end it 'does not update the assignees if they do not have access' do |