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,6 +48,28 @@ module Gitlab | ||
| 48 | @note = @noteable.notes.find(params[:note_id]) | 48 | @note = @noteable.notes.find(params[:note_id]) |
| 49 | present @note, with: Entities::Note | 49 | present @note, with: Entities::Note |
| 50 | end | 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 | end | 73 | end |
| 52 | end | 74 | end |
| 53 | end | 75 | end |
spec/requests/api/notes_spec.rb
| @@ -67,4 +67,24 @@ describe Gitlab::API do | @@ -67,4 +67,24 @@ describe Gitlab::API do | ||
| 67 | end | 67 | end |
| 68 | end | 68 | end |
| 69 | end | 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 | end | 90 | end |