summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/jira/dvcs_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/jira/dvcs_spec.rb')
-rw-r--r--spec/lib/gitlab/jira/dvcs_spec.rb58
1 files changed, 58 insertions, 0 deletions
diff --git a/spec/lib/gitlab/jira/dvcs_spec.rb b/spec/lib/gitlab/jira/dvcs_spec.rb
new file mode 100644
index 00000000000..09e777b38ea
--- /dev/null
+++ b/spec/lib/gitlab/jira/dvcs_spec.rb
@@ -0,0 +1,58 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Jira::Dvcs do
+ describe '.encode_slash' do
+ it 'replaces slash character' do
+ expect(described_class.encode_slash('a/b/c')).to eq('a@b@c')
+ end
+
+ it 'ignores path without slash' do
+ expect(described_class.encode_slash('foo')).to eq('foo')
+ end
+ end
+
+ describe '.decode_slash' do
+ it 'replaces slash character' do
+ expect(described_class.decode_slash('a@b@c')).to eq('a/b/c')
+ end
+
+ it 'ignores path without slash' do
+ expect(described_class.decode_slash('foo')).to eq('foo')
+ end
+ end
+
+ describe '.encode_project_name' do
+ let(:group) { create(:group)}
+ let(:project) { create(:project, group: group)}
+
+ context 'root group' do
+ it 'returns project path' do
+ expect(described_class.encode_project_name(project)).to eq(project.path)
+ end
+ end
+
+ context 'nested group' do
+ let(:group) { create(:group, :nested)}
+
+ it 'returns encoded project full path' do
+ expect(described_class.encode_project_name(project)).to eq(described_class.encode_slash(project.full_path))
+ end
+ end
+ end
+
+ describe '.restore_full_path' do
+ context 'project name is an encoded full path' do
+ it 'returns decoded project path' do
+ expect(described_class.restore_full_path(namespace: 'group1', project: 'group1@group2@project1')).to eq('group1/group2/project1')
+ end
+ end
+
+ context 'project name is not an encoded full path' do
+ it 'assumes project belongs to root namespace and returns full project path based on passed in namespace' do
+ expect(described_class.restore_full_path(namespace: 'group1', project: 'project1')).to eq('group1/project1')
+ end
+ end
+ end
+end