diff options
author | cnam-dep <cnam812@gmail.com> | 2016-02-24 00:59:32 +0300 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-05-09 16:07:35 +0200 |
commit | 5364400741b7d041c945ccca98283bc465d5a87c (patch) | |
tree | bae5a056d7f13d1422dc0ee2c511111b5b0c6d08 | |
parent | 618033fb2f0461275f03541f428e33b3e1b4d721 (diff) | |
download | gitlab-ce-5364400741b7d041c945ccca98283bc465d5a87c.tar.gz |
API: Expose Issue#user_notes_count
-rw-r--r-- | CHANGELOG | 3 | ||||
-rw-r--r-- | app/models/concerns/issuable.rb | 4 | ||||
-rw-r--r-- | doc/api/issues.md | 15 | ||||
-rw-r--r-- | lib/api/entities.rb | 2 | ||||
-rw-r--r-- | spec/requests/api/issues_spec.rb | 15 |
5 files changed, 33 insertions, 6 deletions
diff --git a/CHANGELOG b/CHANGELOG index b07b7da3300..567b5717171 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -51,6 +51,9 @@ v 8.7.2 - Label titles in filters are now escaped properly v 8.7.1 + - API: Expose Issue#user_notes_count (Anton Popov) + +v 8.7.1 (unreleased) - Throttle the update of `project.last_activity_at` to 1 minute. !3848 - Fix .gitlab-ci.yml parsing issue when hidde job is a template without script definition. !3849 - Fix license detection to detect all license files, not only known licenses. !3878 diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb index 2e4efc4e8d8..7a3db742030 100644 --- a/app/models/concerns/issuable.rb +++ b/app/models/concerns/issuable.rb @@ -160,6 +160,10 @@ module Issuable notes.awards.where(note: "thumbsup").count end + def user_notes_count + notes.user.count + end + def subscribed_without_subscriptions?(user) participants(user).include?(user) end diff --git a/doc/api/issues.md b/doc/api/issues.md index 3e78149f442..fc7a7ae0c0c 100644 --- a/doc/api/issues.md +++ b/doc/api/issues.md @@ -77,7 +77,8 @@ Example response: "created_at" : "2016-01-04T15:31:51.081Z", "iid" : 6, "labels" : [], - "subscribed" : false + "subscribed" : false, + "user_notes_count": 1 } ] ``` @@ -154,7 +155,8 @@ Example response: "title" : "Ut commodi ullam eos dolores perferendis nihil sunt.", "updated_at" : "2016-01-04T15:31:46.176Z", "created_at" : "2016-01-04T15:31:46.176Z", - "subscribed" : false + "subscribed" : false, + "user_notes_count": 1 } ] ``` @@ -216,7 +218,8 @@ Example response: "title" : "Ut commodi ullam eos dolores perferendis nihil sunt.", "updated_at" : "2016-01-04T15:31:46.176Z", "created_at" : "2016-01-04T15:31:46.176Z", - "subscribed": false + "subscribed": false, + "user_notes_count": 1 } ``` @@ -271,7 +274,8 @@ Example response: "description" : null, "updated_at" : "2016-01-07T12:44:33.959Z", "milestone" : null, - "subscribed" : true + "subscribed" : true, + "user_notes_count": 0 } ``` @@ -329,7 +333,8 @@ Example response: "id" : 85, "assignee" : null, "milestone" : null, - "subscribed" : true + "subscribed" : true, + "user_notes_count": 0 } ``` diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 716ca6f7ed9..42f623c5a3a 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -170,10 +170,10 @@ module API expose :label_names, as: :labels expose :milestone, using: Entities::Milestone expose :assignee, :author, using: Entities::UserBasic - expose :subscribed do |issue, options| issue.subscribed?(options[:current_user]) end + expose :user_notes_count end class MergeRequest < ProjectEntity diff --git a/spec/requests/api/issues_spec.rb b/spec/requests/api/issues_spec.rb index f88e39cad9e..008bcae1747 100644 --- a/spec/requests/api/issues_spec.rb +++ b/spec/requests/api/issues_spec.rb @@ -39,6 +39,7 @@ describe API::API, api: true do let!(:empty_milestone) do create(:milestone, title: '2.0.0', project: project) end + let!(:issue_note) { create(:note, noteable: issue, project: project, author: user) } before { project.team << [user, :reporter] } @@ -128,6 +129,13 @@ describe API::API, api: true do expect(json_response).to be_an Array expect(json_response.length).to eq(0) end + + it 'should return an count notes in issue' do + get api("/issues", user) + expect(response.status).to eq(200) + expect(json_response).to be_an Array + expect(json_response.first['user_notes_count']).to eq(1) + end end end @@ -229,6 +237,13 @@ describe API::API, api: true do expect(json_response.length).to eq(1) expect(json_response.first['id']).to eq(closed_issue.id) end + + it 'should return an count notes in issue' do + get api("#{base_url}/issues", user) + expect(response.status).to eq(200) + expect(json_response).to be_an Array + expect(json_response.first['user_notes_count']).to eq(1) + end end describe "GET /projects/:id/issues/:issue_id" do |