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:
authorZeger-Jan van de Weg <git@zjvandeweg.nl>2019-01-08 13:54:18 +0300
committerZeger-Jan van de Weg <git@zjvandeweg.nl>2019-01-11 13:50:44 +0300
commite672ed849484d5ff830ebfe4e3c32b984a6902f2 (patch)
tree3e95bf7f5c6821e32de70c05708a158fc25837f3
parenta996e4e3b3fb25b365e4dc6bfb0766cc71f4cae5 (diff)
Nullify pool_repository when a project leaves
Previously the nullification wasn't done, as the only caller would later destroy the model all together. In https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/9070 this change was made. This commit is basically a backport before that MR is merged.
-rw-r--r--app/models/pool_repository.rb6
-rw-r--r--app/models/project.rb2
-rw-r--r--spec/models/project_spec.rb11
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 cab173503ce..8f78bf86f76 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 d1ab0bdba29..b48a9048a42 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -4387,6 +4387,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