From 9ff9f453b77a7443294b0f34025824092413489c Mon Sep 17 00:00:00 2001 From: Andrejs Cunskis Date: Thu, 8 Apr 2021 21:41:28 +0300 Subject: [PATCH] add rebase merge request method --- lib/gitlab/client/merge_requests.rb | 14 ++++++++++++++ spec/fixtures/merge_request_rebase.json | 3 +++ spec/gitlab/client/merge_requests_spec.rb | 17 +++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 spec/fixtures/merge_request_rebase.json diff --git a/lib/gitlab/client/merge_requests.rb b/lib/gitlab/client/merge_requests.rb index 7173dca67..4d01019d9 100644 --- a/lib/gitlab/client/merge_requests.rb +++ b/lib/gitlab/client/merge_requests.rb @@ -337,5 +337,19 @@ def merge_request_diff_versions(project, merge_request_id) def merge_request_diff_version(project, merge_request_id, version_id) get("/projects/#{url_encode project}/merge_requests/#{merge_request_id}/versions/#{version_id}") end + + # Rebase a merge request. + # + # @example + # Gitlab.rebase_merge_request(5, 42, { skip_ci: true }) + # + # @param [Integer, String] project The ID or name of a project. + # @param [Integer] id The ID of a merge request. + # @param [Hash] options A customizable set of options. + # @option options [String] :skip_ci Set to true to skip creating a CI pipeline + # @return [Gitlab::ObjectifiedHash] Rebase progress status + def rebase_merge_request(project, id, options = {}) + put("/projects/#{url_encode project}/merge_requests/#{id}/rebase", body: options) + end end end diff --git a/spec/fixtures/merge_request_rebase.json b/spec/fixtures/merge_request_rebase.json new file mode 100644 index 000000000..fb407f6ab --- /dev/null +++ b/spec/fixtures/merge_request_rebase.json @@ -0,0 +1,3 @@ +{ + "rebase_in_progress": true +} diff --git a/spec/gitlab/client/merge_requests_spec.rb b/spec/gitlab/client/merge_requests_spec.rb index 2ed2c6089..dcb738157 100644 --- a/spec/gitlab/client/merge_requests_spec.rb +++ b/spec/gitlab/client/merge_requests_spec.rb @@ -407,4 +407,21 @@ expect(@diff.diffs.first['old_path']).to eq('LICENSE') end end + + describe '.rebase_merge_request' do + before do + stub_put('/projects/3/merge_requests/105/rebase', 'merge_request_rebase') + .with(body: { skip_ci: true }) + @response = Gitlab.rebase_merge_request(3, 105, skip_ci: true) + end + + it 'gets correct resource' do + expect(a_put('/projects/3/merge_requests/105/rebase') + .with(body: { skip_ci: true })).to have_been_made + end + + it 'returns rebase in progress response' do + expect(@response.rebase_in_progress).to be_truthy + end + end end