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 |