diff options
author | Marin Jankovski <marin@gitlab.com> | 2019-04-17 13:41:51 +0000 |
---|---|---|
committer | Marin Jankovski <marin@gitlab.com> | 2019-04-17 13:41:51 +0000 |
commit | a364be88a4f4b2a7efafda7d04881b7adde941c7 (patch) | |
tree | 80b9e0773cd7c3b391f9d544c4382a55efa6d14c | |
parent | 06e75f0c147b7ca2f307ef15caebe16c27a83854 (diff) | |
parent | 635eee0d1c54ec27b0e9908a098b224d31a9e843 (diff) | |
download | gitlab-ce-a364be88a4f4b2a7efafda7d04881b7adde941c7.tar.gz |
Merge branch 'sh-fix-merge-requests-api-remove-branch-param-11-10-rc8' into '11-10-stable-prepare-rc8'11-10-stable-prepare-rc8
[11.10 RC8 port] Fix remove_source_branch merge request API handling
See merge request gitlab-org/gitlab-ce!27459
-rw-r--r-- | app/services/merge_requests/update_service.rb | 2 | ||||
-rw-r--r-- | changelogs/unreleased/sh-fix-merge-requests-api-remove-branch-param.yml | 5 | ||||
-rw-r--r-- | lib/api/merge_requests.rb | 3 | ||||
-rw-r--r-- | spec/requests/api/merge_requests_spec.rb | 26 |
4 files changed, 34 insertions, 2 deletions
diff --git a/app/services/merge_requests/update_service.rb b/app/services/merge_requests/update_service.rb index 8112c2a4299..e042c0a6434 100644 --- a/app/services/merge_requests/update_service.rb +++ b/app/services/merge_requests/update_service.rb @@ -16,7 +16,7 @@ module MergeRequests params.delete(:force_remove_source_branch) end - if params[:force_remove_source_branch].present? + if params.has_key?(:force_remove_source_branch) merge_request.merge_params['force_remove_source_branch'] = params.delete(:force_remove_source_branch) end diff --git a/changelogs/unreleased/sh-fix-merge-requests-api-remove-branch-param.yml b/changelogs/unreleased/sh-fix-merge-requests-api-remove-branch-param.yml new file mode 100644 index 00000000000..d13c972ccc9 --- /dev/null +++ b/changelogs/unreleased/sh-fix-merge-requests-api-remove-branch-param.yml @@ -0,0 +1,5 @@ +--- +title: Fix remove_source_branch merge request API handling +merge_request: 27392 +author: +type: fixed diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index e4b21b7d1c4..f164e1c1eeb 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -333,7 +333,8 @@ module API merge_request = find_merge_request_with_access(params.delete(:merge_request_iid), :update_merge_request) mr_params = declared_params(include_missing: false) - mr_params[:force_remove_source_branch] = mr_params.delete(:remove_source_branch) if mr_params[:remove_source_branch].present? + + mr_params[:force_remove_source_branch] = mr_params.delete(:remove_source_branch) if mr_params.has_key?(:remove_source_branch) merge_request = ::MergeRequests::UpdateService.new(user_project, current_user, mr_params).execute(merge_request) diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb index 7ffa365c651..e148f6033a3 100644 --- a/spec/requests/api/merge_requests_spec.rb +++ b/spec/requests/api/merge_requests_spec.rb @@ -1527,6 +1527,32 @@ describe API::MergeRequests do end describe "PUT /projects/:id/merge_requests/:merge_request_iid" do + context 'updates force_remove_source_branch properly' do + it 'sets to false' do + merge_request.update(merge_params: { 'force_remove_source_branch' => true } ) + + expect(merge_request.force_remove_source_branch?).to be_truthy + + put api("/projects/#{project.id}/merge_requests/#{merge_request.iid}", user), params: { state_event: "close", remove_source_branch: false } + + expect(response).to have_gitlab_http_status(200) + expect(json_response['state']).to eq('closed') + expect(json_response['force_remove_source_branch']).to be_falsey + end + + it 'sets to true' do + merge_request.update(merge_params: { 'force_remove_source_branch' => false } ) + + expect(merge_request.force_remove_source_branch?).to be_falsey + + put api("/projects/#{project.id}/merge_requests/#{merge_request.iid}", user), params: { state_event: "close", remove_source_branch: true } + + expect(response).to have_gitlab_http_status(200) + expect(json_response['state']).to eq('closed') + expect(json_response['force_remove_source_branch']).to be_truthy + end + end + context "to close a MR" do it "returns merge_request" do put api("/projects/#{project.id}/merge_requests/#{merge_request.iid}", user), params: { state_event: "close" } |