summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schilling <rschilling@student.tugraz.at>2014-08-13 14:12:05 +0200
committerRobert Schilling <rschilling@student.tugraz.at>2014-08-13 15:48:26 +0200
commitb9519c83142d566ee562da57563db42849e91771 (patch)
tree4ba96aa8b92bf8b4c458e8c4ddb49ef16bc7313d
parentc9eaa46c738ad23bbb3d6f3dfbdaf8a485d0a030 (diff)
downloadgitlab-ce-b9519c83142d566ee562da57563db42849e91771.tar.gz
Validate label titel in project scope
-rw-r--r--app/models/label.rb2
-rw-r--r--features/project/issues/labels.feature17
-rw-r--r--features/steps/project/labels.rb18
-rw-r--r--features/steps/shared/paths.rb14
4 files changed, 47 insertions, 4 deletions
diff --git a/app/models/label.rb b/app/models/label.rb
index 941520b4c74..515ed447f00 100644
--- a/app/models/label.rb
+++ b/app/models/label.rb
@@ -12,7 +12,7 @@ class Label < ActiveRecord::Base
validates :title,
presence: true,
format: { with: /\A[^&\?,&]*\z/ },
- uniqueness: true
+ uniqueness: { scope: :project_id }
scope :order_by_name, -> { reorder("labels.title ASC") }
diff --git a/features/project/issues/labels.feature b/features/project/issues/labels.feature
index b88108af719..29cf5307271 100644
--- a/features/project/issues/labels.feature
+++ b/features/project/issues/labels.feature
@@ -10,7 +10,7 @@ Feature: Project Labels
And I should see label "feature"
Scenario: I create new label
- Given I visit new label page
+ Given I visit project "Shop" new label page
When I submit new label 'support'
Then I should see label 'support'
@@ -25,6 +25,19 @@ Feature: Project Labels
Then I should not see label 'bug'
Scenario: I create a label with invalid color
- Given I visit new label page
+ Given I visit project "Shop" new label page
When I submit new label with invalid color
Then I should see label color error message
+
+ Scenario: I create a label that already exists
+ Given I visit project "Shop" new label page
+ When I submit new label 'bug'
+ Then I should see label label exist error message
+
+ Scenario: I create the same label on another project
+ Given I own project "Forum"
+ And I visit project "Forum" labels page
+ And I visit project "Forum" new label page
+ When I submit new label 'bug'
+ Then I should see label 'bug'
+
diff --git a/features/steps/project/labels.rb b/features/steps/project/labels.rb
index 12ce23da832..8320405e096 100644
--- a/features/steps/project/labels.rb
+++ b/features/steps/project/labels.rb
@@ -31,18 +31,36 @@ class ProjectLabels < Spinach::FeatureSteps
click_button 'Save'
end
+ step 'I submit new label \'bug\'' do
+ fill_in 'Title', with: 'bug'
+ fill_in 'Background Color', with: '#F95610'
+ click_button 'Save'
+ end
+
step 'I submit new label with invalid color' do
fill_in 'Title', with: 'support'
fill_in 'Background Color', with: '#12'
click_button 'Save'
end
+ step 'I should see label label exist error message' do
+ within '.label-form' do
+ page.should have_content 'Title has already been taken'
+ end
+ end
+
step 'I should see label color error message' do
within '.label-form' do
page.should have_content 'Color is invalid'
end
end
+ step 'I should see label \'bug\'' do
+ within '.manage-labels-list' do
+ page.should have_content 'bug'
+ end
+ end
+
step 'I should not see label \'bug\'' do
within '.manage-labels-list' do
page.should_not have_content 'bug'
diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb
index 4e97dba20b3..0d06383509f 100644
--- a/features/steps/shared/paths.rb
+++ b/features/steps/shared/paths.rb
@@ -287,10 +287,22 @@ module SharedPaths
end
step 'I visit project "Shop" labels page' do
+ project = Project.find_by(name: 'Shop')
visit project_labels_path(project)
end
- step 'I visit new label page' do
+ step 'I visit project "Forum" labels page' do
+ project = Project.find_by(name: 'Forum')
+ visit project_labels_path(project)
+ end
+
+ step 'I visit project "Shop" new label page' do
+ project = Project.find_by(name: 'Shop')
+ visit new_project_label_path(project)
+ end
+
+ step 'I visit project "Forum" new label page' do
+ project = Project.find_by(name: 'Forum')
visit new_project_label_path(project)
end