Extract EE specific files/lines for spec/services/merge_requests
We have the following files containing EE specific code. We should move them to ee/
spec/services/merge_requests/refresh_service_spec.rb
diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/services/merge_requests/refresh_service_spec.rb
index 9e9dc5a576c..ab199c42477 100644
--- a/spec/services/merge_requests/refresh_service_spec.rb
+++ b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/services/merge_requests/refresh_service_spec.rb
@@ -13,7 +13,7 @@ describe MergeRequests::RefreshService do
group = create(:group)
group.add_owner(@user)
- @project = create(:project, :repository, namespace: group)
+ @project = create(:project, :repository, namespace: group, approvals_before_merge: 1, reset_approvals_on_push: true)
@fork_project = fork_project(@project, @user, repository: true)
@merge_request = create(:merge_request,
@@ -38,6 +38,9 @@ describe MergeRequests::RefreshService do
target_branch: 'feature',
target_project: @project)
+ @merge_request.approvals.create(user_id: user.id)
+ @fork_merge_request.approvals.create(user_id: user.id)
+
@build_failed_todo = create(:todo,
:build_failed,
user: @user,
@@ -87,6 +90,9 @@ describe MergeRequests::RefreshService do
expect(@fork_merge_request.notes).to be_empty
expect(@build_failed_todo).to be_done
expect(@fork_build_failed_todo).to be_done
+ # EE-only
+ expect(@merge_request.approvals).to be_empty
+ expect(@fork_merge_request.approvals).not_to be_empty
end
it 'reloads source branch MRs memoization' do
@@ -229,7 +235,7 @@ describe MergeRequests::RefreshService do
let(:notification_service) { spy('notification_service') }
before do
- @merge_request.update(state: :reopened)
+ @merge_request.update(state: :opened)
allow(refresh_service).to receive(:execute_hooks)
allow(NotificationService).to receive(:new) { notification_service }
@@ -270,6 +276,9 @@ describe MergeRequests::RefreshService do
expect(@fork_merge_request.notes.last.note).to include('merged')
expect(@build_failed_todo).to be_done
expect(@fork_build_failed_todo).to be_done
+ # EE-only
+ expect(@merge_request.approvals).not_to be_empty
+ expect(@fork_merge_request.approvals).not_to be_empty
end
end
@@ -346,6 +355,9 @@ describe MergeRequests::RefreshService do
expect(@fork_merge_request).to be_open
expect(@build_failed_todo).to be_pending
expect(@fork_build_failed_todo).to be_pending
+ # EE-only
+ expect(@merge_request.approvals).not_to be_empty
+ expect(@fork_merge_request.approvals).to be_empty
end
end
@@ -368,6 +380,9 @@ describe MergeRequests::RefreshService do
expect(@fork_merge_request).to be_closed
expect(@build_failed_todo).to be_pending
expect(@fork_build_failed_todo).to be_pending
+ # EE-only
+ expect(@merge_request.approvals).not_to be_empty
+ expect(@fork_merge_request.approvals).to be_empty
end
end
end
@@ -386,6 +401,9 @@ describe MergeRequests::RefreshService do
expect(@fork_merge_request).to be_open
expect(@build_failed_todo).to be_pending
expect(@fork_build_failed_todo).to be_pending
+ # EE-only
+ expect(@merge_request.approvals).not_to be_empty
+ expect(@fork_merge_request.approvals).not_to be_empty
end
end
@@ -472,6 +490,82 @@ describe MergeRequests::RefreshService do
expect(@fork_merge_request.notes).to be_empty
expect(@build_failed_todo).to be_done
expect(@fork_build_failed_todo).to be_done
+ # EE-only
+ expect(@merge_request.approvals).not_to be_empty
+ expect(@fork_merge_request.approvals).not_to be_empty
+ end
+ end
+
+ context 'resetting approvals if they are enabled' do
+ context 'when approvals_before_merge is disabled' do
+ before do
+ @project.update(approvals_before_merge: 0)
+ refresh_service = service.new(@project, @user)
+ allow(refresh_service).to receive(:execute_hooks)
+ refresh_service.execute(@oldrev, @newrev, 'refs/heads/master')
+ reload_mrs
+ end
+
+ it 'resets approvals' do
+ expect(@merge_request.approvals).to be_empty
+ end
+ end
+
+ context 'when reset_approvals_on_push is disabled' do
+ before do
+ @project.update(reset_approvals_on_push: false)
+ refresh_service = service.new(@project, @user)
+ allow(refresh_service).to receive(:execute_hooks)
+ refresh_service.execute(@oldrev, @newrev, 'refs/heads/master')
+ reload_mrs
+ end
+
+ it 'does not reset approvals' do
+ expect(@merge_request.approvals).not_to be_empty
+ end
+ end
+
+ context 'when the rebase_commit_sha on the MR matches the pushed SHA' do
+ before do
+ @merge_request.update(rebase_commit_sha: @newrev)
+ refresh_service = service.new(@project, @user)
+ allow(refresh_service).to receive(:execute_hooks)
+ refresh_service.execute(@oldrev, @newrev, 'refs/heads/master')
+ reload_mrs
+ end
+
+ it 'does not reset approvals' do
+ expect(@merge_request.approvals).not_to be_empty
+ end
+ end
+
+ context 'when there are approvals' do
+ context 'closed merge request' do
+ before do
+ @merge_request.close!
+ refresh_service = service.new(@project, @user)
+ allow(refresh_service).to receive(:execute_hooks)
+ refresh_service.execute(@oldrev, @newrev, 'refs/heads/master')
+ reload_mrs
+ end
+
+ it 'resets the approvals' do
+ expect(@merge_request.approvals).to be_empty
+ end
+ end
+
+ context 'opened merge request' do
+ before do
+ refresh_service = service.new(@project, @user)
+ allow(refresh_service).to receive(:execute_hooks)
+ refresh_service.execute(@oldrev, @newrev, 'refs/heads/master')
+ reload_mrs
+ end
+
+ it 'resets the approvals' do
+ expect(@merge_request.approvals).to be_empty
+ end
+ end
end
end
spec/services/merge_requests/update_service_spec.rb
diff --git a/spec/services/merge_requests/update_service_spec.rb b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/services/merge_requests/update_service_spec.rb
index 20580bf14b9..5c8906289e9 100644
--- a/spec/services/merge_requests/update_service_spec.rb
+++ b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/services/merge_requests/update_service_spec.rb
@@ -405,7 +405,7 @@ describe MergeRequests::UpdateService, :mailer do
end
end
- context 'when the issue is relabeled' do
+ context 'when the merge request is relabeled' do
let!(:non_subscriber) { create(:user) }
let!(:subscriber) { create(:user) { |u| label.toggle_subscription(u, project) } }
Edited by Yorick Peterse