diff options
author | Robert Schilling <rschilling@student.tugraz.at> | 2014-08-13 14:12:05 +0200 |
---|---|---|
committer | Robert Schilling <rschilling@student.tugraz.at> | 2014-08-13 15:48:26 +0200 |
commit | b9519c83142d566ee562da57563db42849e91771 (patch) | |
tree | 4ba96aa8b92bf8b4c458e8c4ddb49ef16bc7313d | |
parent | c9eaa46c738ad23bbb3d6f3dfbdaf8a485d0a030 (diff) | |
download | gitlab-ce-b9519c83142d566ee562da57563db42849e91771.tar.gz |
Validate label titel in project scope
-rw-r--r-- | app/models/label.rb | 2 | ||||
-rw-r--r-- | features/project/issues/labels.feature | 17 | ||||
-rw-r--r-- | features/steps/project/labels.rb | 18 | ||||
-rw-r--r-- | features/steps/shared/paths.rb | 14 |
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 |