gitlab-org--gitlab-foss/spec/lib/gitlab/jira/dvcs_spec.rb

58 lines
1.7 KiB
Ruby

# 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