diff options
Diffstat (limited to 'spec/controllers/projects/merge_requests_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/merge_requests_controller_spec.rb | 44 |
1 files changed, 35 insertions, 9 deletions
diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb index f4a18dcba51..34cbf0c8723 100644 --- a/spec/controllers/projects/merge_requests_controller_spec.rb +++ b/spec/controllers/projects/merge_requests_controller_spec.rb @@ -412,7 +412,7 @@ describe Projects::MergeRequestsController do end end - context 'when the pipeline succeeds is passed' do + context 'when merge when pipeline succeeds option is passed' do let!(:head_pipeline) do create(:ci_empty_pipeline, project: project, sha: merge_request.diff_head_sha, ref: merge_request.source_branch, head_pipeline_of: merge_request) end @@ -429,8 +429,9 @@ describe Projects::MergeRequestsController do it 'sets the MR to merge when the pipeline succeeds' do service = double(:merge_when_pipeline_succeeds_service) + allow(service).to receive(:available_for?) { true } - expect(MergeRequests::MergeWhenPipelineSucceedsService) + expect(AutoMerge::MergeWhenPipelineSucceedsService) .to receive(:new).with(project, anything, anything) .and_return(service) expect(service).to receive(:execute).with(merge_request) @@ -461,6 +462,30 @@ describe Projects::MergeRequestsController do expect(json_response).to eq('status' => 'merge_when_pipeline_succeeds') end end + + context 'when auto merge has not been enabled yet' do + it 'calls AutoMergeService#execute' do + expect_next_instance_of(AutoMergeService) do |service| + expect(service).to receive(:execute).with(merge_request, 'merge_when_pipeline_succeeds') + end + + merge_when_pipeline_succeeds + end + end + + context 'when auto merge has already been enabled' do + before do + merge_request.update!(auto_merge_enabled: true, merge_user: user) + end + + it 'calls AutoMergeService#update' do + expect_next_instance_of(AutoMergeService) do |service| + expect(service).to receive(:update).with(merge_request) + end + + merge_when_pipeline_succeeds + end + end end describe 'only_allow_merge_if_all_discussions_are_resolved? setting' do @@ -713,9 +738,9 @@ describe Projects::MergeRequestsController do end end - describe 'POST cancel_merge_when_pipeline_succeeds' do + describe 'POST cancel_auto_merge' do subject do - post :cancel_merge_when_pipeline_succeeds, + post :cancel_auto_merge, params: { format: :json, namespace_id: merge_request.project.namespace.to_param, @@ -725,14 +750,15 @@ describe Projects::MergeRequestsController do xhr: true end - it 'calls MergeRequests::MergeWhenPipelineSucceedsService' do - mwps_service = double + it 'calls AutoMergeService' do + auto_merge_service = double - allow(MergeRequests::MergeWhenPipelineSucceedsService) + allow(AutoMergeService) .to receive(:new) - .and_return(mwps_service) + .and_return(auto_merge_service) - expect(mwps_service).to receive(:cancel).with(merge_request) + allow(auto_merge_service).to receive(:available_strategies).with(merge_request) + expect(auto_merge_service).to receive(:cancel).with(merge_request) subject end |