Commit a7aacb4dc4d2cb3875db22dee830553462100a20

Authored by Dmitriy Zaporozhets
2 parents 5fc3d746 19938156

Merge pull request #6586 from abner/master

added api method to return labels of a given project
doc/api/projects.md
@@ -621,3 +621,29 @@ Parameters: @@ -621,3 +621,29 @@ Parameters:
621 + query (required) - A string contained in the project name 621 + query (required) - A string contained in the project name
622 + per_page (optional) - number of projects to return per page 622 + per_page (optional) - number of projects to return per page
623 + page (optional) - the page to retrieve 623 + page (optional) - the page to retrieve
  624 +
  625 +
  626 +## Labels
  627 +
  628 +### List project labels
  629 +
  630 +Get a list of project labels.
  631 +
  632 +```
  633 +GET /projects/:id/labels
  634 +```
  635 +
  636 +Parameters:
  637 +
  638 ++ `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
  639 +
  640 +```json
  641 +[
  642 + {
  643 + "name":"featute"
  644 + },
  645 + {
  646 + "name": "bug"
  647 + }
  648 +]
  649 +```
lib/api/entities.rb
@@ -187,5 +187,9 @@ module API @@ -187,5 +187,9 @@ module API
187 end 187 end
188 end 188 end
189 end 189 end
  190 +
  191 + class Label < Grape::Entity
  192 + expose :name
  193 + end
190 end 194 end
191 end 195 end
lib/api/projects.rb
@@ -215,6 +215,17 @@ module API @@ -215,6 +215,17 @@ module API
215 @users = paginate @users 215 @users = paginate @users
216 present @users, with: Entities::User 216 present @users, with: Entities::User
217 end 217 end
  218 +
  219 + # Get a project labels
  220 + #
  221 + # Parameters:
  222 + # id (required) - The ID of a project
  223 + # Example Request:
  224 + # GET /projects/:id/labels
  225 + get ':id/labels' do
  226 + @labels = user_project.issues_labels
  227 + present @labels, with: Entities::Label
  228 + end
218 end 229 end
219 end 230 end
220 end 231 end
spec/requests/api/projects_spec.rb
@@ -13,6 +13,7 @@ describe API::API do @@ -13,6 +13,7 @@ describe API::API do
13 let(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') } 13 let(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') }
14 let(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) } 14 let(:users_project) { create(:users_project, user: user, project: project, project_access: UsersProject::MASTER) }
15 let(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) } 15 let(:users_project2) { create(:users_project, user: user3, project: project, project_access: UsersProject::DEVELOPER) }
  16 + let(:issue_with_labels) { create(:issue, author: user, assignee: user, project: project, :label_list => "label1, label2") }
16 17
17 describe "GET /projects" do 18 describe "GET /projects" do
18 before { project } 19 before { project }
@@ -632,4 +633,16 @@ describe API::API do @@ -632,4 +633,16 @@ describe API::API do
632 end 633 end
633 end 634 end
634 end 635 end
  636 +
  637 + describe "GET /projects/:id/labels" do
  638 + before { issue_with_labels }
  639 +
  640 + it "should return project labels" do
  641 + get api("/projects/#{project.id}/labels", user)
  642 + response.status.should == 200
  643 + json_response.should be_an Array
  644 + json_response.first['name'].should == issue_with_labels.labels.first.name
  645 + json_response.last['name'].should == issue_with_labels.labels.last.name
  646 + end
  647 + end
635 end 648 end