59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			59 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
 |