diff options
author | Douwe Maan <douwe@gitlab.com> | 2019-01-11 16:04:12 +0300 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2019-01-11 16:04:12 +0300 |
commit | 0f71b4bcb3870710ae821ea111894fc7d95f2a1c (patch) | |
tree | f06adde04e8c333309874a3a19b06ee5777bf0d5 | |
parent | e593e14a101b5342ad1f502fb086c89329bb9c68 (diff) | |
parent | e672ed849484d5ff830ebfe4e3c32b984a6902f2 (diff) |
Merge branch 'zj-nillify-pool-repo-when-leaving' into 'master'
Nullify pool_repository when a project leaves
See merge request gitlab-org/gitlab-ce!24225
-rw-r--r-- | app/models/pool_repository.rb | 6 | ||||
-rw-r--r-- | app/models/project.rb | 2 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 11 |
3 files changed, 17 insertions, 2 deletions
diff --git a/app/models/pool_repository.rb b/app/models/pool_repository.rb index ad6a008dee8..34220c1b450 100644 --- a/app/models/pool_repository.rb +++ b/app/models/pool_repository.rb @@ -85,7 +85,11 @@ class PoolRepository < ActiveRecord::Base def unlink_repository(repository) object_pool.unlink_repository(repository.raw) - mark_obsolete unless member_projects.where.not(id: repository.project.id).exists? + if member_projects.where.not(id: repository.project.id).exists? + true + else + mark_obsolete + end end def object_pool diff --git a/app/models/project.rb b/app/models/project.rb index 5439f94c4a9..05aca9c4e51 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -2040,7 +2040,7 @@ class Project < ActiveRecord::Base end def leave_pool_repository - pool_repository&.unlink_repository(repository) + pool_repository&.unlink_repository(repository) && update_column(:pool_repository_id, nil) end private diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index ffbf0960c95..64fbc49913e 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -4443,6 +4443,17 @@ describe Project do end end + describe '#leave_pool_repository' do + let(:pool) { create(:pool_repository) } + let(:project) { create(:project, :repository, pool_repository: pool) } + + it 'removes the membership' do + project.leave_pool_repository + + expect(pool.member_projects.reload).not_to include(project) + end + end + def rugged_config rugged_repo(project.repository).config end |