Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/projects/fork_service_spec.rb')
-rw-r--r--spec/services/projects/fork_service_spec.rb21
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) }