From f04549056806d2bcb63441ebdffe1032711e83c8 Mon Sep 17 00:00:00 2001
From: Cristian Medina <cabkarian@gmail.com>
Date: Thu, 5 Feb 2015 01:42:34 +0000
Subject: [PATCH] Modified lib/api/entities.rb to expose Project class tag_list
 property to the API Updated projects.md to show tag_list field when
 performing GETs Updated projects_spec.rb to include check for tag_list key in
 project list Added changes to the CHANGELOG

---
 CHANGELOG                          |  1 +
 doc/api/projects.md                | 12 ++++++++++++
 lib/api/entities.rb                |  2 +-
 spec/requests/api/projects_spec.rb |  9 ++++++++-
 4 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index c67ce17dc3b..156792a4f84 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -56,6 +56,7 @@ v 7.10.0 (unreleased)
   - Fix "Hello @username." references not working by no longer allowing usernames to end in period.
   - Archive repositories in background worker.
   - Import GitHub, Bitbucket or GitLab.com projects owned by authenticated user into current namespace.
+  - Project labels are now available over the API under the "tag_list" field (Cristian Medina) 
 
 
 v 7.9.2
diff --git a/doc/api/projects.md b/doc/api/projects.md
index 7fe244477db..55d525fef66 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -44,6 +44,10 @@ Parameters:
     "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
     "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
     "web_url": "http://example.com/diaspora/diaspora-client",
+    "tag_list": [
+      "example",
+      "disapora client"
+    ],
     "owner": {
       "id": 3,
       "name": "Diaspora",
@@ -80,6 +84,10 @@ Parameters:
     "ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
     "http_url_to_repo": "http://example.com/brightbox/puppet.git",
     "web_url": "http://example.com/brightbox/puppet",
+    "tag_list": [
+      "example",
+      "puppet"
+    ],
     "owner": {
       "id": 4,
       "name": "Brightbox",
@@ -163,6 +171,10 @@ Parameters:
   "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
   "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
   "web_url": "http://example.com/diaspora/diaspora-project-site",
+  "tag_list": [
+    "example",
+    "disapora project"
+  ],
   "owner": {
     "id": 3,
     "name": "Diaspora",
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 489be210784..51cb934616b 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -46,7 +46,7 @@ module API
     end
 
     class Project < Grape::Entity
-      expose :id, :description, :default_branch
+      expose :id, :description, :default_branch, :tag_list
       expose :public?, as: :public
       expose :archived?, as: :archived
       expose :visibility_level, :ssh_url_to_repo, :http_url_to_repo, :web_url
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index b713f1fe898..cc387378d3a 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -57,7 +57,14 @@ describe API::API, api: true  do
         expect(json_response.first['name']).to eq(project.name)
         expect(json_response.first['owner']['username']).to eq(user.username)
       end
-
+      
+      it 'should include the project labels as the tag_list' do
+        get api('/projects', user)
+        response.status.should == 200
+        json_response.should be_an Array
+        json_response.first.keys.should include('tag_list')
+      end
+      
       context 'and using search' do
         it 'should return searched project' do
           get api('/projects', user), { search: project.name }
-- 
GitLab