summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-10-15 15:56:43 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-10-15 15:56:43 +0200
commit353ddbc7958d55262233c850fd2af2d2df027863 (patch)
treebb004878b81da1aa5008124b416c34871eddc1b1
parent0d09b5fefc635120cf6e4234a401028f815fb326 (diff)
parent2df573dac3859034fcb90566a8ebc270a7e6088a (diff)
downloadgitlab-ce-353ddbc7958d55262233c850fd2af2d2df027863.tar.gz
Merge branch 'stanhu/gitlab-ce-fix-api-mr-comment-notifications'
-rw-r--r--CHANGELOG1
-rw-r--r--lib/api/merge_requests.rb12
-rw-r--r--spec/requests/api/merge_requests_spec.rb5
3 files changed, 16 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG
index e9ca5ddee5f..aba823948a7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,6 +5,7 @@ v 8.1.0 (unreleased)
- Speed up load times of issue detail pages by roughly 1.5x
- Make diff file view easier to use on mobile screens (Stan Hu)
- Improved performance of finding users by username or Email address
+ - Fix bug where merge request comments created by API would not trigger notifications (Stan Hu)
- Add support for creating directories from Files page (Stan Hu)
- Allow removing of project without confirmation when JavaScript is disabled (Stan Hu)
- Support filtering by "Any" milestone or issue and fix "No Milestone" and "No Label" filters (Stan Hu)
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index f3a59fadf24..6eb84baf9cb 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -249,8 +249,16 @@ module API
required_attributes! [:note]
merge_request = user_project.merge_requests.find(params[:merge_request_id])
- note = merge_request.notes.new(note: params[:note], project_id: user_project.id)
- note.author = current_user
+
+ authorize! :create_note, merge_request
+
+ opts = {
+ note: params[:note],
+ noteable_type: 'MergeRequest',
+ noteable_id: merge_request.id
+ }
+
+ note = ::Notes::CreateService.new(user_project, current_user, opts).execute
if note.save
present note, with: Entities::MRNote
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index 35b3d3e296a..a68c7b1e461 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -379,9 +379,14 @@ describe API::API, api: true do
describe "POST /projects/:id/merge_request/:merge_request_id/comments" do
it "should return comment" do
+ original_count = merge_request.notes.size
+
post api("/projects/#{project.id}/merge_request/#{merge_request.id}/comments", user), note: "My comment"
expect(response.status).to eq(201)
expect(json_response['note']).to eq('My comment')
+ expect(json_response['author']['name']).to eq(user.name)
+ expect(json_response['author']['username']).to eq(user.username)
+ expect(merge_request.notes.size).to eq(original_count + 1)
end
it "should return 400 if note is missing" do