From 5ff09dcba9b731b3bec2cb6f7eddad9bb61abe74 Mon Sep 17 00:00:00 2001 From: Joren De Groof Date: Thu, 6 Apr 2017 10:18:23 +0200 Subject: [PATCH] Add ability to get all issues a merge_request will close --- CHANGELOG.md | 1 + lib/gitlab/client/merge_requests.rb | 11 +++++++++++ spec/fixtures/merge_request_closes_issues.json | 1 + spec/gitlab/client/merge_requests_spec.rb | 17 +++++++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 spec/fixtures/merge_request_closes_issues.json diff --git a/CHANGELOG.md b/CHANGELOG.md index b999d8663..c3fee7373 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ - Project ID can also be a string (namespace/project_name). (@bergholdt) - Support pipeline. (@bergholdt) - Add methods to disable and enable deploy keys on projects. (@buzzdeee) +- Add method to fetch issues a merge request will close. (@joren) ### 3.7.0 (16/08/2016) diff --git a/lib/gitlab/client/merge_requests.rb b/lib/gitlab/client/merge_requests.rb index 0a2ee4aea..eea4cb9aa 100644 --- a/lib/gitlab/client/merge_requests.rb +++ b/lib/gitlab/client/merge_requests.rb @@ -165,6 +165,17 @@ def merge_request_commits(project, id) get("/projects/#{url_encode project}/merge_requests/#{id}/commits") end + # List issues that will close on merge + # + # @example + # Gitlab.merge_request_closes_issues(5, 1) + # + # @param [Integer] project The ID of a project + # @param [Integer] iid The internal ID of a merge request + def merge_request_closes_issues(project_id, merge_request_iid) + get("/projects/#{project_id}/merge_requests/#{merge_request_iid}/closes_issues") + end + # Subscribes to a merge request. # # @example diff --git a/spec/fixtures/merge_request_closes_issues.json b/spec/fixtures/merge_request_closes_issues.json new file mode 100644 index 000000000..4a12effe5 --- /dev/null +++ b/spec/fixtures/merge_request_closes_issues.json @@ -0,0 +1 @@ +[{"id":1,"iid":1,"project_id":5,"title":"Merge request 1 issue 1","description":"","state":"opened","created_at":"2017-04-06T08:03:36.163Z","updated_at":"2017-04-06T08:03:57.087Z","labels":[],"milestone":null,"assignee":null,"author":{"name":"John","username":"jdoe","id":1,"state":"active","avatar_url":"","web_url":"https://gitlab.com/jdoe"},"user_notes_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"weight":null,"web_url":"https://gitlab.com/jdoe/milestone_merge_requests_test/issues/1"},{"id":2,"iid":2,"project_id":5,"title":"Merge request 1 issue 2","description":"","state":"opened","created_at":"2017-04-06T08:03:44.023Z","updated_at":"2017-04-06T08:03:44.023Z","labels":[],"milestone":null,"assignee":null,"author":{"name":"John","username":"jdoe","id":426047,"state":"active","avatar_url":"","web_url":"https://gitlab.com/jdoe"},"user_notes_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"weight":null,"web_url":"https://gitlab.com/jdoe/milestone_merge_requests_test/issues/2"}] diff --git a/spec/gitlab/client/merge_requests_spec.rb b/spec/gitlab/client/merge_requests_spec.rb index a68893f1d..a06e91d28 100644 --- a/spec/gitlab/client/merge_requests_spec.rb +++ b/spec/gitlab/client/merge_requests_spec.rb @@ -175,6 +175,23 @@ end end + describe ".merge_request_closes_issues" do + before do + stub_get("/projects/5/merge_requests/1/closes_issues", "merge_request_closes_issues") + @issues = Gitlab.merge_request_closes_issues(5, 1) + end + + it "should get the correct resource" do + expect(a_get("/projects/5/merge_requests/1/closes_issues")).to have_been_made + end + + it "should return a paginated response of the issues the merge_request will close" do + expect(@issues).to be_a(Gitlab::PaginatedResponse) + expect(@issues.first.title).to eq("Merge request 1 issue 1") + expect(@issues.size).to eq(2) + end + end + describe ".subscribe_to_merge_request" do before do stub_post("/projects/3/merge_requests/2/subscribe", "merge_request")