summaryrefslogtreecommitdiff
path: root/spec/models/project_label_spec.rb
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-09-21 17:47:58 -0300
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-19 14:58:24 -0200
commite28058c4107ce454a84b3e3b5750f936dace7db1 (patch)
tree8eb12341289e76b94907a12067ad8dc85b07f71e /spec/models/project_label_spec.rb
parentcfedd42badc6b84457d1de35cb31988777462d5a (diff)
downloadgitlab-ce-e28058c4107ce454a84b3e3b5750f936dace7db1.tar.gz
Validate if project label title does not exist at group level
Diffstat (limited to 'spec/models/project_label_spec.rb')
-rw-r--r--spec/models/project_label_spec.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/spec/models/project_label_spec.rb b/spec/models/project_label_spec.rb
index 93062b9d402..355bb2a938c 100644
--- a/spec/models/project_label_spec.rb
+++ b/spec/models/project_label_spec.rb
@@ -7,5 +7,39 @@ describe ProjectLabel, models: true do
describe 'validations' do
it { is_expected.to validate_presence_of(:project) }
+
+ context 'validates if title must not exist at group level' do
+ let(:group) { create(:group, name: 'gitlab-org') }
+ let(:project) { create(:empty_project, group: group) }
+
+ before do
+ create(:group_label, group: group, title: 'Bug')
+ end
+
+ it 'returns error if title already exists at group level' do
+ label = described_class.new(project: project, title: 'Bug')
+
+ label.valid?
+
+ expect(label.errors[:title]).to include 'already exists at group level for gitlab-org. Please choose another one.'
+ end
+
+ it 'does not returns error if title does not exist at group level' do
+ label = described_class.new(project: project, title: 'Security')
+
+ label.valid?
+
+ expect(label.errors[:title]).to be_empty
+ end
+
+ it 'does not returns error if project does not belong to group' do
+ another_project = create(:empty_project)
+ label = described_class.new(project: another_project, title: 'Bug')
+
+ label.valid?
+
+ expect(label.errors[:title]).to be_empty
+ end
+ end
end
end