summaryrefslogtreecommitdiff
path: root/spec/models/service_desk_setting_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/service_desk_setting_spec.rb')
-rw-r--r--spec/models/service_desk_setting_spec.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/spec/models/service_desk_setting_spec.rb b/spec/models/service_desk_setting_spec.rb
index ca57a5d4087..8ccbd983ba1 100644
--- a/spec/models/service_desk_setting_spec.rb
+++ b/spec/models/service_desk_setting_spec.rb
@@ -31,6 +31,37 @@ RSpec.describe ServiceDeskSetting do
end
end
+ describe '.valid_project_key' do
+ # Creates two projects with same full path slug
+ # group1/test/one and group1/test-one will both have 'group-test-one' slug
+ let_it_be(:group) { create(:group) }
+ let_it_be(:subgroup) { create(:group, parent: group, name: 'test') }
+ let_it_be(:project1) { create(:project, name: 'test-one', group: group) }
+ let_it_be(:project2) { create(:project, name: 'one', group: subgroup) }
+ let_it_be(:project_key) { 'key' }
+
+ before_all do
+ create(:service_desk_setting, project: project1, project_key: project_key)
+ end
+
+ context 'when project_key is unique for every project slug' do
+ it 'does not add error' do
+ settings = build(:service_desk_setting, project: project2, project_key: 'otherkey')
+
+ expect(settings).to be_valid
+ end
+ end
+
+ context 'when project with same slug and settings project_key exists' do
+ it 'adds error' do
+ settings = build(:service_desk_setting, project: project2, project_key: project_key)
+
+ expect(settings).to be_invalid
+ expect(settings.errors[:project_key].first).to eq('already in use for another service desk address.')
+ end
+ end
+ end
+
describe 'associations' do
it { is_expected.to belong_to(:project) }
end