summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-11-04 16:43:28 +0100
committerRémy Coutable <remy@rymai.me>2016-11-04 16:43:28 +0100
commitd38dd3c4ca81cdac4a3c5be4bfce930730faf99d (patch)
treee51bdd1f273b3dbff9506bfc600ff039aad0d15d
parentd12e764744e3be11c7ed886fb454e09a4d1f57d6 (diff)
parent64e2d884d6c8d822ae6e7d4d26af054396b74921 (diff)
downloadgitlab-ce-d38dd3c4ca81cdac4a3c5be4bfce930730faf99d.tar.gz
Merge remote-tracking branch 'origin/labels-api'
See merge request !7014 Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--app/models/project.rb4
-rw-r--r--lib/api/labels.rb6
-rw-r--r--spec/requests/api/labels_spec.rb15
3 files changed, 17 insertions, 8 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index cf931f64c03..686d285410b 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -1067,10 +1067,6 @@ class Project < ActiveRecord::Base
forks.count
end
- def find_label(name)
- labels.find_by(name: name)
- end
-
def origin_merge_requests
merge_requests.where(source_project_id: self.id)
end
diff --git a/lib/api/labels.rb b/lib/api/labels.rb
index 326e1e7ae00..238cea00fba 100644
--- a/lib/api/labels.rb
+++ b/lib/api/labels.rb
@@ -25,7 +25,7 @@ module API
post ':id/labels' do
authorize! :admin_label, user_project
- label = user_project.find_label(params[:name])
+ label = available_labels.find_by(title: params[:name])
conflict!('Label already exists') if label
label = user_project.labels.create(declared(params, include_parent_namespaces: false).to_h)
@@ -46,7 +46,7 @@ module API
delete ':id/labels' do
authorize! :admin_label, user_project
- label = user_project.find_label(params[:name])
+ label = user_project.labels.find_by(title: params[:name])
not_found!('Label') unless label
present label.destroy, with: Entities::Label, current_user: current_user
@@ -65,7 +65,7 @@ module API
put ':id/labels' do
authorize! :admin_label, user_project
- label = user_project.find_label(params[:name])
+ label = user_project.labels.find_by(title: params[:name])
not_found!('Label not found') unless label
update_params = declared(params,
diff --git a/spec/requests/api/labels_spec.rb b/spec/requests/api/labels_spec.rb
index 46641fcd846..f702dfaaf53 100644
--- a/spec/requests/api/labels_spec.rb
+++ b/spec/requests/api/labels_spec.rb
@@ -82,7 +82,20 @@ describe API::API, api: true do
expect(json_response['message']['title']).to eq(['is invalid'])
end
- it 'returns 409 if label already exists' do
+ it 'returns 409 if label already exists in group' do
+ group = create(:group)
+ group_label = create(:group_label, group: group)
+ project.update(group: group)
+
+ post api("/projects/#{project.id}/labels", user),
+ name: group_label.name,
+ color: '#FFAABB'
+
+ expect(response).to have_http_status(409)
+ expect(json_response['message']).to eq('Label already exists')
+ end
+
+ it 'returns 409 if label already exists in project' do
post api("/projects/#{project.id}/labels", user),
name: 'label1',
color: '#FFAABB'