Commit 9886998f24b3d6e44aafc412b87980cb1755544c

Authored by Stuart Pook
1 parent ad3acff4

Add method to get the comments on a merge request

Add method to get the comments for a merge request and
document that you can change the status of a merge request.
doc/api/merge_requests.md
... ... @@ -150,6 +150,7 @@ Parameters:
150 150 + `target_branch` - The target branch
151 151 + `assignee_id` - Assignee user ID
152 152 + `title` - Title of MR
  153 ++ `state_event` - New state (close|reopen|merge)
153 154  
154 155 ```json
155 156  
... ... @@ -210,3 +211,44 @@ Parameters:
210 211 "note":"text1"
211 212 }
212 213 ```
  214 +
  215 +
  216 +## Get the comments on a MR
  217 +
  218 +Gets all the comments associated with a merge request.
  219 +
  220 +```
  221 +GET /projects/:id/merge_request/:merge_request_id/comments
  222 +```
  223 +
  224 +Parameters:
  225 +
  226 ++ `id` (required) - The ID of a project
  227 ++ `merge_request_id` (required) - ID of merge request
  228 +
  229 +```json
  230 +[
  231 + {
  232 + "note":"this is the 1st comment on the 2merge merge request",
  233 + "author":{
  234 + "id":11,
  235 + "username":"admin",
  236 + "email":"admin@local.host",
  237 + "name":"Administrator",
  238 + "state":"active",
  239 + "created_at":"2014-03-06T08:17:35.000Z"
  240 + }
  241 + },
  242 + {
  243 + "note":"_Status changed to closed_",
  244 + "author":{
  245 + "id":11,
  246 + "username":"admin",
  247 + "email":"admin@local.host",
  248 + "name":"Administrator",
  249 + "state":"active",
  250 + "created_at":"2014-03-06T08:17:35.000Z"
  251 + }
  252 + }
  253 +]
  254 +```
... ...
lib/api/merge_requests.rb
... ... @@ -125,6 +125,22 @@ module API
125 125 end
126 126 end
127 127  
  128 + # Get a merge request's comments
  129 + #
  130 + # Parameters:
  131 + # id (required) - The ID of a project
  132 + # merge_request_id (required) - ID of MR
  133 + # Examples:
  134 + # GET /projects/:id/merge_request/:merge_request_id/comments
  135 + #
  136 + get ":id/merge_request/:merge_request_id/comments" do
  137 + merge_request = user_project.merge_requests.find(params[:merge_request_id])
  138 +
  139 + authorize! :read_merge_request, merge_request
  140 +
  141 + present paginate(merge_request.notes), with: Entities::MRNote
  142 + end
  143 +
128 144 # Post comment to merge request
129 145 #
130 146 # Parameters:
... ...
spec/requests/api/merge_requests_spec.rb
... ... @@ -7,6 +7,7 @@ describe API::API do
7 7 let(:user) { create(:user) }
8 8 let!(:project) {create(:project, creator_id: user.id, namespace: user.namespace) }
9 9 let!(:merge_request) { create(:merge_request, author: user, assignee: user, source_project: project, target_project: project, title: "Test") }
  10 + let!(:note) { create(:note_on_merge_request, author: user, project: project, noteable: merge_request, note: "a comment on a MR") }
10 11 before {
11 12 project.team << [user, :reporters]
12 13 }
... ... @@ -205,4 +206,20 @@ describe API::API do
205 206 response.status.should == 404
206 207 end
207 208 end
  209 +
  210 + describe "GET :id/merge_request/:merge_request_id/comments" do
  211 + it "should return merge_request comments" do
  212 + get api("/projects/#{project.id}/merge_request/#{merge_request.id}/comments", user)
  213 + response.status.should == 200
  214 + json_response.should be_an Array
  215 + json_response.length.should == 1
  216 + json_response.first['note'].should == "a comment on a MR"
  217 + json_response.first['author']['id'].should == user.id
  218 + end
  219 +
  220 + it "should return a 404 error if merge_request_id not found" do
  221 + get api("/projects/#{project.id}/merge_request/999/comments", user)
  222 + response.status.should == 404
  223 + end
  224 + end
208 225 end
... ...