Commit 9886998f24b3d6e44aafc412b87980cb1755544c
1 parent
ad3acff4
Exists in
spb-stable
and in
3 other branches
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.
Showing
3 changed files
with
75 additions
and
0 deletions
Show diff stats
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 | ... | ... |