diff options
Diffstat (limited to 'spec/services/projects/fork_service_spec.rb')
-rw-r--r-- | spec/services/projects/fork_service_spec.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/spec/services/projects/fork_service_spec.rb b/spec/services/projects/fork_service_spec.rb index fa6d42369c8..12c51d01d63 100644 --- a/spec/services/projects/fork_service_spec.rb +++ b/spec/services/projects/fork_service_spec.rb @@ -307,6 +307,27 @@ describe Projects::ForkService do end end + context 'when a project is already forked' do + it 'creates a new poolresository after the project is moved to a new shard' do + project = create(:project, :public, :repository) + fork_before_move = fork_project(project) + + # Stub everything required to move a project to a Gitaly shard that does not exist + stub_storage_settings('test_second_storage' => { 'path' => 'tmp/tests/second_storage' }) + allow_any_instance_of(Gitlab::Git::Repository).to receive(:fetch_repository_as_mirror).and_return(true) + + Projects::UpdateRepositoryStorageService.new(project).execute('test_second_storage') + fork_after_move = fork_project(project) + pool_repository_before_move = PoolRepository.joins(:shard) + .where(source_project: project, shards: { name: 'default' }).first + pool_repository_after_move = PoolRepository.joins(:shard) + .where(source_project: project, shards: { name: 'test_second_storage' }).first + + expect(fork_before_move.pool_repository).to eq(pool_repository_before_move) + expect(fork_after_move.pool_repository).to eq(pool_repository_after_move) + end + end + context 'when forking with object pools' do let(:fork_from_project) { create(:project, :public) } let(:forker) { create(:user) } |