From 49f34e78d32a1764646f3a66ed76559840405432 Mon Sep 17 00:00:00 2001 From: Steve Newell Date: Tue, 14 Feb 2017 16:48:29 -0700 Subject: [PATCH 1/3] Update merge_request endpoints to new merge_requests endpoints Resolves https://github.com/NARKOZ/gitlab/issues/229 --- lib/gitlab/client/merge_requests.rb | 12 ++++++------ spec/gitlab/client/merge_requests_spec.rb | 20 ++++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/gitlab/client/merge_requests.rb b/lib/gitlab/client/merge_requests.rb index 4b4fe9749..274b7c5b3 100644 --- a/lib/gitlab/client/merge_requests.rb +++ b/lib/gitlab/client/merge_requests.rb @@ -26,7 +26,7 @@ def merge_requests(project, options={}) # @param [Integer] id The ID of a merge request. # @return ] The merge request's commits. def merge_request_commits(project, id) - get("/projects/#{url_encode project}/merge_request/#{id}/commits") + get("/projects/#{url_encode project}/merge_requests/#{id}/commits") end end end diff --git a/spec/gitlab/client/merge_requests_spec.rb b/spec/gitlab/client/merge_requests_spec.rb index d22650b48..740613d0f 100644 --- a/spec/gitlab/client/merge_requests_spec.rb +++ b/spec/gitlab/client/merge_requests_spec.rb @@ -19,12 +19,12 @@ describe ".merge_request" do before do - stub_get("/projects/3/merge_request/1", "merge_request") + stub_get("/projects/3/merge_requests/1", "merge_request") @merge_request = Gitlab.merge_request(3, 1) end it "should get the correct resource" do - expect(a_get("/projects/3/merge_request/1")).to have_been_made + expect(a_get("/projects/3/merge_requests/1")).to have_been_made end it "should return information about a merge request" do @@ -50,7 +50,7 @@ describe ".update_merge_request" do before do - stub_put("/projects/3/merge_request/2", "merge_request"). + stub_put("/projects/3/merge_requests/2", "merge_request"). with(body: { assignee_id: '1', target_branch: 'master', @@ -64,7 +64,7 @@ end it "should get the correct resource" do - expect(a_put("/projects/3/merge_request/2"). + expect(a_put("/projects/3/merge_requests/2"). with(body: { assignee_id: '1', target_branch: 'master', @@ -80,13 +80,13 @@ describe ".accept_merge_request" do before do - stub_put("/projects/5/merge_request/42/merge", "merge_request"). + stub_put("/projects/5/merge_requests/42/merge", "merge_request"). with(body: { merge_commit_message: 'Nice!' }) @merge_request = Gitlab.accept_merge_request(5, 42, merge_commit_message: 'Nice!') end it "should get the correct resource" do - expect(a_put("/projects/5/merge_request/42/merge"). + expect(a_put("/projects/5/merge_requests/42/merge"). with(body: { merge_commit_message: 'Nice!' })).to have_been_made end @@ -134,12 +134,12 @@ describe ".merge_request_changes" do before do - stub_get("/projects/3/merge_request/2/changes", "merge_request_changes") + stub_get("/projects/3/merge_requests/2/changes", "merge_request_changes") @mr_changes = Gitlab.merge_request_changes(3, 2) end it "should get the correct resource" do - expect(a_get("/projects/3/merge_request/2/changes")).to have_been_made + expect(a_get("/projects/3/merge_requests/2/changes")).to have_been_made end it "should return the merge request changes" do @@ -154,12 +154,12 @@ describe ".merge_request_commits" do before do - stub_get("/projects/3/merge_request/2/commits", "merge_request_commits") + stub_get("/projects/3/merge_requests/2/commits", "merge_request_commits") @mr_commits = Gitlab.merge_request_commits(3, 2) end it "should get the correct resource" do - expect(a_get("/projects/3/merge_request/2/commits")).to have_been_made + expect(a_get("/projects/3/merge_requests/2/commits")).to have_been_made end it "should return the merge request commits" do From 55d3100dc4e66326f9b783c82b587fa060200aff Mon Sep 17 00:00:00 2001 From: Steve Newell Date: Thu, 23 Feb 2017 10:14:50 -0700 Subject: [PATCH 2/3] (Un)subscribe to issues and merge_requests This resolves https://github.com/NARKOZ/gitlab/issues/221 Note that the documentation in the issue is incorrect wrt to the unsubscribe endpoints. Latest Gitlab documentation indicates that a `POST` to `.../unsubscribe` is the correct method, rather than `DELETE`. Also, verbs are `subscribe`/`unsubscribe` rather than `subscription` --- lib/gitlab/client/issues.rb | 24 +++++++++++++++++ lib/gitlab/client/merge_requests.rb | 26 ++++++++++++++++++ spec/gitlab/client/issues_spec.rb | 32 +++++++++++++++++++++++ spec/gitlab/client/merge_requests_spec.rb | 30 +++++++++++++++++++++ 4 files changed, 112 insertions(+) diff --git a/lib/gitlab/client/issues.rb b/lib/gitlab/client/issues.rb index f3ea777ef..a039287dd 100644 --- a/lib/gitlab/client/issues.rb +++ b/lib/gitlab/client/issues.rb @@ -97,6 +97,30 @@ def reopen_issue(project, id) put("/projects/#{url_encode project}/issues/#{id}", body: { state_event: 'reopen' }) end + # Subscribe to an issue. + # + # @example + # Gitlab.subscribe_to_issue(3, 42) + # + # @param [Integer, String] project The ID or name of a project. + # @param [Integer] id The ID of an issue. + # @return [Gitlab::ObjectifiedHash] Information about subscribed issue. + def subscribe_to_issue(project, id) + post("/projects/#{url_encode project}/issues/#{id}/subscribe") + end + + # Unsubscribe from an issue. + # + # @example + # Gitlab.unsubscribe_from_issue(3, 42) + # + # @param [Integer, String] project The ID or name of a project. + # @param [Integer] id The ID of an issue. + # @return [Gitlab::ObjectifiedHash] Information about unsubscribed issue. + def unsubscribe_from_issue(project, id) + post("/projects/#{url_encode project}/issues/#{id}/unsubscribe") + end + # Deletes an issue. # Only for admins and project owners # diff --git a/lib/gitlab/client/merge_requests.rb b/lib/gitlab/client/merge_requests.rb index 274b7c5b3..0a2ee4aea 100644 --- a/lib/gitlab/client/merge_requests.rb +++ b/lib/gitlab/client/merge_requests.rb @@ -164,5 +164,31 @@ def merge_request_changes(project, id) def merge_request_commits(project, id) get("/projects/#{url_encode project}/merge_requests/#{id}/commits") end + + # Subscribes to a merge request. + # + # @example + # Gitlab.subscribe_to_merge_request(5, 1) + # Gitlab.subscribe_to_merge_request('gitlab', 1) + # + # @param [Integer, String] project The ID or name of a project. + # @param [Integer] id The ID of a merge request. + # @return [Gitlab::ObjectifiedHash] Information about subscribed merge request. + def subscribe_to_merge_request(project, id) + post("/projects/#{url_encode project}/merge_requests/#{id}/subscribe") + end + + # Unsubscribes from a merge request. + # + # @example + # Gitlab.unsubscribe_from_merge_request(5, 1) + # Gitlab.unsubscribe_from_merge_request('gitlab', 1) + # + # @param [Integer, String] project The ID or name of a project. + # @param [Integer] id The ID of a merge request. + # @return [Gitlab::ObjectifiedHash] Information about unsubscribed merge request. + def unsubscribe_from_merge_request(project, id) + post("/projects/#{url_encode project}/merge_requests/#{id}/unsubscribe") + end end end diff --git a/spec/gitlab/client/issues_spec.rb b/spec/gitlab/client/issues_spec.rb index ad024f76d..543cb2a5e 100644 --- a/spec/gitlab/client/issues_spec.rb +++ b/spec/gitlab/client/issues_spec.rb @@ -136,6 +136,38 @@ end end + describe ".subscribe_to_issue" do + before do + stub_post("/projects/3/issues/33/subscribe", "issue") + @issue = Gitlab.subscribe_to_issue(3, 33) + end + + it "should get the correct resource" do + expect(a_post("/projects/3/issues/33/subscribe")).to have_been_made + end + + it "should return information about the subscribed issue" do + expect(@issue.project_id).to eq(3) + expect(@issue.assignee.name).to eq("Jack Smith") + end + end + + describe ".unsubscribe_from_issue" do + before do + stub_post("/projects/3/issues/33/unsubscribe", "issue") + @issue = Gitlab.unsubscribe_from_issue(3, 33) + end + + it "should get the correct resource" do + expect(a_post("/projects/3/issues/33/unsubscribe")).to have_been_made + end + + it "should return information about the unsubscribed issue" do + expect(@issue.project_id).to eq(3) + expect(@issue.assignee.name).to eq("Jack Smith") + end + end + describe ".delete_issue" do before do stub_delete("/projects/3/issues/33", "issue") diff --git a/spec/gitlab/client/merge_requests_spec.rb b/spec/gitlab/client/merge_requests_spec.rb index 740613d0f..a68893f1d 100644 --- a/spec/gitlab/client/merge_requests_spec.rb +++ b/spec/gitlab/client/merge_requests_spec.rb @@ -174,4 +174,34 @@ expect(@mr_commits[1].title).to eq "hoge" end end + + describe ".subscribe_to_merge_request" do + before do + stub_post("/projects/3/merge_requests/2/subscribe", "merge_request") + @merge_request = Gitlab.subscribe_to_merge_request(3, 2) + end + + it "should get the correct resource" do + expect(a_post("/projects/3/merge_requests/2/subscribe")).to have_been_made + end + + it "should return information about a merge request" do + expect(@merge_request.project_id).to eq(3) + end + end + + describe ".unsubscribe_from_merge_request" do + before do + stub_post("/projects/3/merge_requests/2/unsubscribe", "merge_request") + @merge_request = Gitlab.unsubscribe_from_merge_request(3, 2) + end + + it "should get the correct resource" do + expect(a_post("/projects/3/merge_requests/2/unsubscribe")).to have_been_made + end + + it "should return information about a merge request" do + expect(@merge_request.project_id).to eq(3) + end + end end From 0fb900ebb59eced935a38329c198b721f486d202 Mon Sep 17 00:00:00 2001 From: Steve Newell Date: Thu, 2 Mar 2017 08:18:48 -0700 Subject: [PATCH 3/3] update CHANGELOG.MD --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 543a78292..7d9e8135d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ - Add method `share_project_with_group` (@danhalligan) - Allow to retrieve `ssh_keys` for a specific user(@dirker) - Allow issues to use NAMESPACE/REPO identifier (@brodock) +- Add issues subscribe/unsubscribe (@newellista) +- Add merge_requests subscribe/unsubscribe (@newellista) ### 3.7.0 (16/08/2016)