summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Mazetto <brodock@gmail.com>2019-08-11 13:12:15 -0300
committerGabriel Mazetto <brodock@gmail.com>2019-08-11 13:12:15 -0300
commit91ae92e98a7ee5d60fed9a26e308c08fb7a6214f (patch)
treeeaa9b45984135e03cbc664d759ab529687986265
parentdb916e396a86b5a53301e85fa168a70158ebfea1 (diff)
downloadgitlab-ce-65797-source-project-deleted-repo-expections.tar.gz
WIP Merge Request specs for deleted forked project65797-source-project-deleted-repo-expections
-rw-r--r--spec/controllers/projects/merge_requests/content_controller_spec.rb14
-rw-r--r--spec/factories/projects.rb10
2 files changed, 24 insertions, 0 deletions
diff --git a/spec/controllers/projects/merge_requests/content_controller_spec.rb b/spec/controllers/projects/merge_requests/content_controller_spec.rb
index 2879e06aee4..8e582f50eb6 100644
--- a/spec/controllers/projects/merge_requests/content_controller_spec.rb
+++ b/spec/controllers/projects/merge_requests/content_controller_spec.rb
@@ -47,6 +47,20 @@ describe Projects::MergeRequests::ContentController do
expect { do_request }.to change { merge_request.reload.open? }.from(true).to(false)
end
+
+ context 'source project exists but repository is removed from disk' do
+ let(:forked) { create(:project, :missing_repo, forked_from: project) }
+ let(:merge_request) do
+ create(:merge_request, :with_merge_request_pipeline,
+ target_project: project.reload, source_project: forked.reload)
+ end
+
+ it 'renders 500 error' do
+ do_request
+
+ expect(response).to have_http_status(:internal_server_error)
+ end
+ end
end
context 'user does not have access to the project' do
diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb
index 2816a750889..aa0699e5b19 100644
--- a/spec/factories/projects.rb
+++ b/spec/factories/projects.rb
@@ -36,6 +36,8 @@ FactoryBot.define do
group_runners_enabled nil
import_status nil
import_jid nil
+
+ forked_from nil
end
after(:create) do |project, evaluator|
@@ -68,6 +70,14 @@ FactoryBot.define do
project.group&.refresh_members_authorized_projects
+ # establish fork relation if forked_from is informed
+ if evaluator.forked_from
+ evaluator.forked_from.build_root_of_fork_network.save
+
+ project.build_fork_network_member(forked_from_project: evaluator.forked_from,
+ fork_network: evaluator.forked_from.reload.fork_network).save
+ end
+
# assign the delegated `#ci_cd_settings` attributes after create
project.reload.group_runners_enabled = evaluator.group_runners_enabled unless evaluator.group_runners_enabled.nil?