diff options
Diffstat (limited to 'spec/models/service_desk_setting_spec.rb')
-rw-r--r-- | spec/models/service_desk_setting_spec.rb | 31 |
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 |