Commit 93f4234d authored by Sean McGivern's avatar Sean McGivern

Merge branch 'add-api-label-id' into 'master'

Expose Label id to API

Closes #23448

See merge request !7275
parents 6f307295 63f0b099
---
title: Expose label IDs in API
merge_request: 7275
author: Rares Sfirlogea
...@@ -21,6 +21,7 @@ Example response: ...@@ -21,6 +21,7 @@ Example response:
```json ```json
[ [
{ {
"id" : 1,
"name" : "bug", "name" : "bug",
"color" : "#d9534f", "color" : "#d9534f",
"description": "Bug reported by user", "description": "Bug reported by user",
...@@ -31,6 +32,7 @@ Example response: ...@@ -31,6 +32,7 @@ Example response:
"priority": 10 "priority": 10
}, },
{ {
"id" : 4,
"color" : "#d9534f", "color" : "#d9534f",
"name" : "confirmed", "name" : "confirmed",
"description": "Confirmed issue", "description": "Confirmed issue",
...@@ -41,6 +43,7 @@ Example response: ...@@ -41,6 +43,7 @@ Example response:
"priority": null "priority": null
}, },
{ {
"id" : 7,
"name" : "critical", "name" : "critical",
"color" : "#d9534f", "color" : "#d9534f",
"description": "Critical issue. Need fix ASAP", "description": "Critical issue. Need fix ASAP",
...@@ -51,6 +54,7 @@ Example response: ...@@ -51,6 +54,7 @@ Example response:
"priority": null "priority": null
}, },
{ {
"id" : 8,
"name" : "documentation", "name" : "documentation",
"color" : "#f0ad4e", "color" : "#f0ad4e",
"description": "Issue about documentation", "description": "Issue about documentation",
...@@ -61,13 +65,14 @@ Example response: ...@@ -61,13 +65,14 @@ Example response:
"priority": null "priority": null
}, },
{ {
"id" : 9,
"color" : "#5cb85c", "color" : "#5cb85c",
"name" : "enhancement", "name" : "enhancement",
"description": "Enhancement proposal", "description": "Enhancement proposal",
"open_issues_count": 1, "open_issues_count": 1,
"closed_issues_count": 0, "closed_issues_count": 0,
"open_merge_requests_count": 1, "open_merge_requests_count": 1,
"subscribed": false, "subscribed": true,
"priority": null "priority": null
} }
] ]
...@@ -100,12 +105,14 @@ Example response: ...@@ -100,12 +105,14 @@ Example response:
```json ```json
{ {
"id" : 10,
"name" : "feature", "name" : "feature",
"color" : "#5843AD", "color" : "#5843AD",
"open_issues_count": 1, "description":null,
"open_issues_count": 0,
"closed_issues_count": 0, "closed_issues_count": 0,
"open_merge_requests_count": 1, "open_merge_requests_count": 0,
"description": null, "subscribed": false,
"priority": null "priority": null
} }
``` ```
...@@ -135,14 +142,14 @@ Example response: ...@@ -135,14 +142,14 @@ Example response:
```json ```json
{ {
"title" : "feature", "id" : 1,
"color" : "#5843AD", "name" : "bug",
"description": "New feature proposal", "color" : "#d9534f",
"updated_at" : "2015-11-03T21:22:30.737Z", "description": "Bug reported by user",
"template" : false, "open_issues_count": 1,
"project_id" : 1, "closed_issues_count": 0,
"created_at" : "2015-11-03T21:22:30.737Z", "open_merge_requests_count": 1,
"id" : 9, "subscribed": false,
"priority": null "priority": null
} }
``` ```
...@@ -178,12 +185,14 @@ Example response: ...@@ -178,12 +185,14 @@ Example response:
```json ```json
{ {
"color" : "#8E44AD", "id" : 8,
"name" : "docs", "name" : "docs",
"color" : "#8E44AD",
"description": "Documentation", "description": "Documentation",
"open_issues_count": 1, "open_issues_count": 1,
"closed_issues_count": 0, "closed_issues_count": 0,
"open_merge_requests_count": 1, "open_merge_requests_count": 2,
"subscribed": false,
"priority": null "priority": null
} }
``` ```
...@@ -213,12 +222,13 @@ Example response: ...@@ -213,12 +222,13 @@ Example response:
```json ```json
{ {
"name": "Docs", "id" : 1,
"color": "#cc0033", "name" : "bug",
"description": "", "color" : "#d9534f",
"open_issues_count": 0, "description": "Bug reported by user",
"open_issues_count": 1,
"closed_issues_count": 0, "closed_issues_count": 0,
"open_merge_requests_count": 0, "open_merge_requests_count": 1,
"subscribed": true, "subscribed": true,
"priority": null "priority": null
} }
...@@ -249,12 +259,13 @@ Example response: ...@@ -249,12 +259,13 @@ Example response:
```json ```json
{ {
"name": "Docs", "id" : 1,
"color": "#cc0033", "name" : "bug",
"description": "", "color" : "#d9534f",
"open_issues_count": 0, "description": "Bug reported by user",
"open_issues_count": 1,
"closed_issues_count": 0, "closed_issues_count": 0,
"open_merge_requests_count": 0, "open_merge_requests_count": 1,
"subscribed": false, "subscribed": false,
"priority": null "priority": null
} }
......
...@@ -433,7 +433,7 @@ module API ...@@ -433,7 +433,7 @@ module API
end end
class LabelBasic < Grape::Entity class LabelBasic < Grape::Entity
expose :name, :color, :description expose :id, :name, :color, :description
end end
class Label < LabelBasic class Label < LabelBasic
......
...@@ -17,12 +17,18 @@ describe API::API, api: true do ...@@ -17,12 +17,18 @@ describe API::API, api: true do
group = create(:group) group = create(:group)
group_label = create(:group_label, group: group) group_label = create(:group_label, group: group)
project.update(group: group) project.update(group: group)
expected_keys = [
'id', 'name', 'color', 'description',
'open_issues_count', 'closed_issues_count', 'open_merge_requests_count',
'subscribed', 'priority'
]
get api("/projects/#{project.id}/labels", user) get api("/projects/#{project.id}/labels", user)
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response.size).to eq(3) expect(json_response.size).to eq(3)
expect(json_response.first.keys).to match_array expected_keys
expect(json_response.map { |l| l['name'] }).to match_array([group_label.name, priority_label.name, label1.name]) expect(json_response.map { |l| l['name'] }).to match_array([group_label.name, priority_label.name, label1.name])
expect(json_response.last['name']).to eq(label1.name) expect(json_response.last['name']).to eq(label1.name)
expect(json_response.last['color']).to be_present expect(json_response.last['color']).to be_present
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment