diff options
Diffstat (limited to 'spec/services/merge_requests/update_service_spec.rb')
-rw-r--r-- | spec/services/merge_requests/update_service_spec.rb | 95 |
1 files changed, 76 insertions, 19 deletions
diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb index 9eb82dcd0ad..edb95840604 100644 --- a/spec/services/merge_requests/update_service_spec.rb +++ b/spec/services/merge_requests/update_service_spec.rb @@ -87,6 +87,38 @@ RSpec.describe MergeRequests::UpdateService, :mailer do expect(@merge_request.discussion_locked).to be_truthy end + context 'usage counters' do + let(:merge_request2) { create(:merge_request) } + let(:draft_merge_request) { create(:merge_request, :draft_merge_request)} + + it 'update as expected' do + expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter) + .to receive(:track_title_edit_action).once.with(user: user) + expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter) + .to receive(:track_description_edit_action).once.with(user: user) + + MergeRequests::UpdateService.new(project, user, opts).execute(merge_request2) + end + + it 'tracks Draft/WIP marking' do + expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter) + .to receive(:track_marked_as_draft_action).once.with(user: user) + + opts[:title] = "WIP: #{opts[:title]}" + + MergeRequests::UpdateService.new(project, user, opts).execute(merge_request2) + end + + it 'tracks Draft/WIP un-marking' do + expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter) + .to receive(:track_unmarked_as_draft_action).once.with(user: user) + + opts[:title] = "Non-draft/wip title string" + + MergeRequests::UpdateService.new(project, user, opts).execute(draft_merge_request) + end + end + context 'updating milestone' do RSpec.shared_examples 'updates milestone' do it 'sets milestone' do @@ -142,29 +174,19 @@ RSpec.describe MergeRequests::UpdateService, :mailer do context 'with reviewers' do let(:opts) { { reviewer_ids: [user2.id] } } - context 'when merge_request_reviewers feature is disabled' do - before(:context) do - stub_feature_flags(merge_request_reviewers: false) - end - - it 'does not create a system note about merge_request review request' do - note = find_note('review requested from') + it 'creates system note about merge_request review request' do + note = find_note('requested review from') - expect(note).to be_nil - end + expect(note).not_to be_nil + expect(note.note).to include "requested review from #{user2.to_reference}" end - context 'when merge_request_reviewers feature is enabled' do - before(:context) do - stub_feature_flags(merge_request_reviewers: true) - end - - it 'creates system note about merge_request review request' do - note = find_note('requested review from') + it 'updates the tracking' do + expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter) + .to receive(:track_users_review_requested) + .with(users: [user]) - expect(note).not_to be_nil - expect(note.note).to include "requested review from #{user2.to_reference}" - end + update_merge_request(reviewer_ids: [user.id]) end end @@ -794,6 +816,14 @@ RSpec.describe MergeRequests::UpdateService, :mailer do expect(merge_request.assignee_ids).to eq([user.id]) end + it 'updates the tracking when user ids are valid' do + expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter) + .to receive(:track_users_assigned_to_mr) + .with(users: [user]) + + update_merge_request(assignee_ids: [user.id]) + end + it 'does not update assignee_id when user cannot read issue' do non_member = create(:user) original_assignees = merge_request.assignees @@ -883,6 +913,33 @@ RSpec.describe MergeRequests::UpdateService, :mailer do end end + context 'updating `target_branch`' do + let(:merge_request) do + create(:merge_request, + source_project: project, + source_branch: 'mr-b', + target_branch: 'mr-a') + end + + it 'updates to master' do + expect(SystemNoteService).to receive(:change_branch).with( + merge_request, project, user, 'target', 'update', 'mr-a', 'master' + ) + + expect { update_merge_request(target_branch: 'master') } + .to change { merge_request.reload.target_branch }.from('mr-a').to('master') + end + + it 'updates to master because of branch deletion' do + expect(SystemNoteService).to receive(:change_branch).with( + merge_request, project, user, 'target', 'delete', 'mr-a', 'master' + ) + + expect { update_merge_request(target_branch: 'master', target_branch_was_deleted: true) } + .to change { merge_request.reload.target_branch }.from('mr-a').to('master') + end + end + it_behaves_like 'issuable record that supports quick actions' do let(:existing_merge_request) { create(:merge_request, source_project: project) } let(:issuable) { described_class.new(project, user, params).execute(existing_merge_request) } |