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 | ... | ... |