From cf69b6e7f0a546712f7d324136c182e6ccff2e67 Mon Sep 17 00:00:00 2001 From: ddieulivol Date: Fri, 23 Aug 2024 14:17:59 +0200 Subject: [PATCH] Add the merge_request_dependencies method --- lib/gitlab/client/merge_requests.rb | 12 ++++++++++++ spec/fixtures/merge_request_dependencies.json | 1 + spec/gitlab/client/merge_requests_spec.rb | 16 ++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 spec/fixtures/merge_request_dependencies.json diff --git a/lib/gitlab/client/merge_requests.rb b/lib/gitlab/client/merge_requests.rb index cd30154cb..78c5b97eb 100644 --- a/lib/gitlab/client/merge_requests.rb +++ b/lib/gitlab/client/merge_requests.rb @@ -59,6 +59,18 @@ def merge_request_pipelines(project, id) get("/projects/#{url_encode project}/merge_requests/#{id}/pipelines") end + # Shows information about the merge request dependencies that must be resolved before merging. + # + # @example + # Gitlab.merge_request_dependencies(5, 36) + # + # @param [Integer, String] project The ID or name of a project. + # @param [Integer] id The ID of a merge request. + # @return [Array] + def merge_request_dependencies(project, id) + get("/projects/#{url_encode project}/merge_requests/#{id}/blocks") + end + # Create a new pipeline for a merge request. # A pipeline created via this endpoint doesnt run a regular branch/tag pipeline. # It requires .gitlab-ci.yml to be configured with only: [merge_requests] to create jobs. diff --git a/spec/fixtures/merge_request_dependencies.json b/spec/fixtures/merge_request_dependencies.json new file mode 100644 index 000000000..f5994c6f0 --- /dev/null +++ b/spec/fixtures/merge_request_dependencies.json @@ -0,0 +1 @@ +[{"id":1234,"blocking_merge_request":{"id":2,"target_branch":"master","source_branch":"api2","project_id":3,"title":"New feature 2","closed":false,"merged":false,"author":{"id":1,"email":"john@example.com","name":"John Smith","blocked":false,"created_at":"2012-10-19T05:56:05Z"},"assignee":{"id":2,"email":"jack@example.com","name":"Jack Smith","blocked":false,"created_at":"2012-10-19T05:56:14Z"}},"blocked_merge_request":{"id":1,"target_branch":"master","source_branch":"api","project_id":3,"title":"New feature","closed":false,"merged":false,"author":{"id":1,"email":"john@example.com","name":"John Smith","blocked":false,"created_at":"2012-10-19T05:56:05Z"},"assignee":{"id":2,"email":"jack@example.com","name":"Jack Smith","blocked":false,"created_at":"2012-10-19T05:56:14Z"}}}] diff --git a/spec/gitlab/client/merge_requests_spec.rb b/spec/gitlab/client/merge_requests_spec.rb index a3da49b5e..2e6c8a971 100644 --- a/spec/gitlab/client/merge_requests_spec.rb +++ b/spec/gitlab/client/merge_requests_spec.rb @@ -77,6 +77,22 @@ end end + describe '.merge_request_dependencies' do + before do + stub_get('/projects/3/merge_requests/1/blocks', 'merge_request_dependencies') + @pipelines = Gitlab.merge_request_dependencies(3, 1) + end + + it 'gets the correct resource' do + expect(a_get('/projects/3/merge_requests/1/blocks')).to have_been_made + end + + it 'returns information about merge request dependencies' do + expect(@pipelines.first.id).to eq(1234) + expect(@pipelines.first.keys).to include('blocking_merge_request', 'blocked_merge_request') + end + end + describe '.create_merge_request_pipeline' do before do stub_post('/projects/3/merge_requests/2/pipelines', 'pipeline_create')