diff options
author | Nick Thomas <nick@gitlab.com> | 2018-12-07 22:58:15 +0300 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2018-12-07 22:58:15 +0300 |
commit | d5994552b2088c0c27e419b3ae2c4432ea329a82 (patch) | |
tree | 8b3549e7a9e618dc038efc73f8e90e7a9b2226fa /spec/models | |
parent | 88c0984d077e2a85d684d71d036d27278cd81182 (diff) | |
parent | 896c0bdbfb1a83ff5a7d0a755ac249ac2a895798 (diff) |
Merge branch 'zj-pool-repository-creation' into 'master'
Allow public forks to be deduplicated
See merge request gitlab-org/gitlab-ce!23508
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/pool_repository_spec.rb | 6 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 38 |
2 files changed, 41 insertions, 3 deletions
diff --git a/spec/models/pool_repository_spec.rb b/spec/models/pool_repository_spec.rb index 541e78507e5..3d3878b8c39 100644 --- a/spec/models/pool_repository_spec.rb +++ b/spec/models/pool_repository_spec.rb @@ -5,6 +5,7 @@ require 'spec_helper' describe PoolRepository do describe 'associations' do it { is_expected.to belong_to(:shard) } + it { is_expected.to have_one(:source_project) } it { is_expected.to have_many(:member_projects) } end @@ -12,15 +13,14 @@ describe PoolRepository do let!(:pool_repository) { create(:pool_repository) } it { is_expected.to validate_presence_of(:shard) } + it { is_expected.to validate_presence_of(:source_project) } end describe '#disk_path' do it 'sets the hashed disk_path' do pool = create(:pool_repository) - elements = File.split(pool.disk_path) - - expect(elements).to all( match(/\d{2,}/) ) + expect(pool.disk_path).to match(%r{\A@pools/\h{2}/\h{2}/\h{64}}) end end end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 93c83fd21fd..1c85411dc3b 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -4092,6 +4092,44 @@ describe Project do end end + describe '#git_objects_poolable?' do + subject { project } + + context 'when the feature flag is turned off' do + before do + stub_feature_flags(object_pools: false) + end + + let(:project) { create(:project, :repository, :public) } + + it { is_expected.not_to be_git_objects_poolable } + end + + context 'when the feature flag is enabled' do + context 'when not using hashed storage' do + let(:project) { create(:project, :legacy_storage, :public, :repository) } + + it { is_expected.not_to be_git_objects_poolable } + end + + context 'when the project is not public' do + let(:project) { create(:project, :private) } + + it { is_expected.not_to be_git_objects_poolable } + end + + context 'when objects are poolable' do + let(:project) { create(:project, :repository, :public) } + + before do + stub_application_setting(hashed_storage_enabled: true) + end + + it { is_expected.to be_git_objects_poolable } + end + end + end + def rugged_config rugged_repo(project.repository).config end |