Commit c946bf886c2c07491a4595e93861df02dbf809f4
1 parent
1c5aa848
Exists in
master
and in
4 other branches
API: create new notes
Showing
2 changed files
with
42 additions
and
0 deletions
Show diff stats
lib/api/notes.rb
| ... | ... | @@ -48,6 +48,28 @@ module Gitlab |
| 48 | 48 | @note = @noteable.notes.find(params[:note_id]) |
| 49 | 49 | present @note, with: Entities::Note |
| 50 | 50 | end |
| 51 | + | |
| 52 | + # Create a new +noteable+ note | |
| 53 | + # | |
| 54 | + # Parameters: | |
| 55 | + # id (required) - The ID or code name of a project | |
| 56 | + # noteable_id (required) - The ID of an issue or snippet | |
| 57 | + # body (required) - The content of a note | |
| 58 | + # Example Request: | |
| 59 | + # POST /projects/:id/issues/:noteable_id/notes | |
| 60 | + # POST /projects/:id/snippets/:noteable_id/notes | |
| 61 | + post ":id/#{noteables_str}/:#{noteable_id_str}/notes" do | |
| 62 | + @noteable = user_project.send(:"#{noteables_str}").find(params[:"#{noteable_id_str}"]) | |
| 63 | + @note = @noteable.notes.new(note: params[:body]) | |
| 64 | + @note.author = current_user | |
| 65 | + @note.project = user_project | |
| 66 | + | |
| 67 | + if @note.save | |
| 68 | + present @note, with: Entities::Note | |
| 69 | + else | |
| 70 | + not_found! | |
| 71 | + end | |
| 72 | + end | |
| 51 | 73 | end |
| 52 | 74 | end |
| 53 | 75 | end | ... | ... |
spec/requests/api/notes_spec.rb
| ... | ... | @@ -67,4 +67,24 @@ describe Gitlab::API do |
| 67 | 67 | end |
| 68 | 68 | end |
| 69 | 69 | end |
| 70 | + | |
| 71 | + describe "POST /projects/:id/noteable/:noteable_id/notes" do | |
| 72 | + context "when noteable is an Issue" do | |
| 73 | + it "should create a new issue note" do | |
| 74 | + post api("/projects/#{project.id}/issues/#{issue.id}/notes", user), body: 'hi!' | |
| 75 | + response.status.should == 201 | |
| 76 | + json_response['body'].should == 'hi!' | |
| 77 | + json_response['author']['email'].should == user.email | |
| 78 | + end | |
| 79 | + end | |
| 80 | + | |
| 81 | + context "when noteable is a Snippet" do | |
| 82 | + it "should create a new snippet note" do | |
| 83 | + post api("/projects/#{project.id}/snippets/#{snippet.id}/notes", user), body: 'hi!' | |
| 84 | + response.status.should == 201 | |
| 85 | + json_response['body'].should == 'hi!' | |
| 86 | + json_response['author']['email'].should == user.email | |
| 87 | + end | |
| 88 | + end | |
| 89 | + end | |
| 70 | 90 | end | ... | ... |