diff options
author | Gabriel Mazetto <brodock@gmail.com> | 2019-08-11 13:12:15 -0300 |
---|---|---|
committer | Gabriel Mazetto <brodock@gmail.com> | 2019-08-11 13:12:15 -0300 |
commit | 91ae92e98a7ee5d60fed9a26e308c08fb7a6214f (patch) | |
tree | eaa9b45984135e03cbc664d759ab529687986265 | |
parent | db916e396a86b5a53301e85fa168a70158ebfea1 (diff) | |
download | gitlab-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.rb | 14 | ||||
-rw-r--r-- | spec/factories/projects.rb | 10 |
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? |