80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'spec_helper'
 | |
| 
 | |
| describe Gitlab::Git::ObjectPool do
 | |
|   let(:pool_repository) { create(:pool_repository) }
 | |
|   let(:source_repository) { pool_repository.source_project.repository }
 | |
| 
 | |
|   subject { pool_repository.object_pool }
 | |
| 
 | |
|   describe '#storage' do
 | |
|     it "equals the pool repository's shard name" do
 | |
|       expect(subject.storage).not_to be_nil
 | |
|       expect(subject.storage).to eq(pool_repository.shard_name)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe '#create' do
 | |
|     before do
 | |
|       subject.create
 | |
|     end
 | |
| 
 | |
|     context "when the pool doesn't exist yet" do
 | |
|       it 'creates the pool' do
 | |
|         expect(subject.exists?).to be(true)
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     context 'when the pool already exists' do
 | |
|       it 'raises an FailedPrecondition' do
 | |
|         expect do
 | |
|           subject.create
 | |
|         end.to raise_error(GRPC::FailedPrecondition)
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe '#exists?' do
 | |
|     context "when the object pool doesn't exist" do
 | |
|       it 'returns false' do
 | |
|         expect(subject.exists?).to be(false)
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     context 'when the object pool exists' do
 | |
|       let(:pool) { create(:pool_repository, :ready) }
 | |
| 
 | |
|       subject { pool.object_pool }
 | |
| 
 | |
|       it 'returns true' do
 | |
|         expect(subject.exists?).to be(true)
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe '#link' do
 | |
|     let!(:pool_repository) { create(:pool_repository, :ready) }
 | |
| 
 | |
|     context 'when linked for the first time' do
 | |
|       it 'sets a remote' do
 | |
|         expect do
 | |
|           subject.link(source_repository)
 | |
|         end.not_to raise_error
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     context 'when the remote is already set' do
 | |
|       before do
 | |
|         subject.link(source_repository)
 | |
|       end
 | |
| 
 | |
|       it "doesn't raise an error" do
 | |
|         expect do
 | |
|           subject.link(source_repository)
 | |
|         end.not_to raise_error
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |