diff options
Diffstat (limited to 'spec/controllers/projects/merge_requests_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/merge_requests_controller_spec.rb | 79 |
1 files changed, 46 insertions, 33 deletions
diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb index ee194e5ff2f..f159f0e6099 100644 --- a/spec/controllers/projects/merge_requests_controller_spec.rb +++ b/spec/controllers/projects/merge_requests_controller_spec.rb @@ -6,14 +6,10 @@ RSpec.describe Projects::MergeRequestsController do include ProjectForksHelper include Gitlab::Routing - let(:project) { create(:project, :repository) } - let(:user) { project.owner } + let_it_be_with_refind(:project) { create(:project, :repository) } + let_it_be_with_reload(:project_public_with_private_builds) { create(:project, :repository, :public, :builds_private) } + let(:user) { project.owner } let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project) } - let(:merge_request_with_conflicts) do - create(:merge_request, source_branch: 'conflict-resolvable', target_branch: 'conflict-start', source_project: project, merge_status: :unchecked) do |mr| - mr.mark_as_unmergeable - end - end before do sign_in(user) @@ -99,7 +95,8 @@ RSpec.describe Projects::MergeRequestsController do project, merge_request, 'json', - diff_head: true)) + diff_head: true, + view: 'inline')) end end @@ -107,7 +104,7 @@ RSpec.describe Projects::MergeRequestsController do render_views it 'renders merge request page' do - merge_request.merge_request_diff.destroy + merge_request.merge_request_diff.destroy! go(format: :html) @@ -147,7 +144,7 @@ RSpec.describe Projects::MergeRequestsController do let(:new_project) { create(:project) } before do - project.route.destroy + project.route.destroy! new_project.redirect_routes.create!(path: project.full_path) new_project.add_developer(user) end @@ -161,7 +158,7 @@ RSpec.describe Projects::MergeRequestsController do } expect(response).to redirect_to(project_merge_request_path(new_project, merge_request)) - expect(response).to have_gitlab_http_status(:found) + expect(response).to have_gitlab_http_status(:moved_permanently) end it 'redirects from an old merge request commits correctly' do @@ -173,7 +170,7 @@ RSpec.describe Projects::MergeRequestsController do } expect(response).to redirect_to(commits_project_merge_request_path(new_project, merge_request)) - expect(response).to have_gitlab_http_status(:found) + expect(response).to have_gitlab_http_status(:moved_permanently) end end end @@ -359,12 +356,11 @@ RSpec.describe Projects::MergeRequestsController do end context 'there is no source project' do - let(:project) { create(:project, :repository) } let(:forked_project) { fork_project_with_submodules(project) } let!(:merge_request) { create(:merge_request, source_project: forked_project, source_branch: 'add-submodule-version-bump', target_branch: 'master', target_project: project) } before do - forked_project.destroy + forked_project.destroy! end it 'closes MR without errors' do @@ -435,7 +431,7 @@ RSpec.describe Projects::MergeRequestsController do context 'when the merge request is not mergeable' do before do - merge_request.update(title: "WIP: #{merge_request.title}") + merge_request.update!(title: "WIP: #{merge_request.title}") post :merge, params: base_params end @@ -475,7 +471,7 @@ RSpec.describe Projects::MergeRequestsController do context 'when squash is passed as 1' do it 'updates the squash attribute on the MR to true' do - merge_request.update(squash: false) + merge_request.update!(squash: false) merge_with_sha(squash: '1') expect(merge_request.reload.squash_on_merge?).to be_truthy @@ -484,7 +480,7 @@ RSpec.describe Projects::MergeRequestsController do context 'when squash is passed as 0' do it 'updates the squash attribute on the MR to false' do - merge_request.update(squash: true) + merge_request.update!(squash: true) merge_with_sha(squash: '0') expect(merge_request.reload.squash_on_merge?).to be_falsey @@ -547,7 +543,7 @@ RSpec.describe Projects::MergeRequestsController do context 'and head pipeline is not the current one' do before do - head_pipeline.update(sha: 'not_current_sha') + head_pipeline.update!(sha: 'not_current_sha') end it 'returns :failed' do @@ -667,9 +663,9 @@ RSpec.describe Projects::MergeRequestsController do end context "when the user is owner" do - let(:owner) { create(:user) } - let(:namespace) { create(:namespace, owner: owner) } - let(:project) { create(:project, :repository, namespace: namespace) } + let_it_be(:owner) { create(:user) } + let_it_be(:namespace) { create(:namespace, owner: owner) } + let_it_be(:project) { create(:project, :repository, namespace: namespace) } before do sign_in owner @@ -765,7 +761,7 @@ RSpec.describe Projects::MergeRequestsController do end context 'with private builds on a public project' do - let(:project) { create(:project, :repository, :public, :builds_private) } + let(:project) { project_public_with_private_builds } context 'for a project owner' do it 'responds with serialized pipelines' do @@ -813,7 +809,7 @@ RSpec.describe Projects::MergeRequestsController do context 'with public builds' do let(:forked_project) do fork_project(project, fork_user, repository: true).tap do |new_project| - new_project.project_feature.update(builds_access_level: ProjectFeature::ENABLED) + new_project.project_feature.update!(builds_access_level: ProjectFeature::ENABLED) end end @@ -855,7 +851,7 @@ RSpec.describe Projects::MergeRequestsController do end describe 'GET exposed_artifacts' do - let(:merge_request) do + let_it_be(:merge_request) do create(:merge_request, :with_merge_request_pipeline, target_project: project, @@ -993,7 +989,7 @@ RSpec.describe Projects::MergeRequestsController do end describe 'GET coverage_reports' do - let(:merge_request) do + let_it_be(:merge_request) do create(:merge_request, :with_merge_request_pipeline, target_project: project, @@ -1123,7 +1119,7 @@ RSpec.describe Projects::MergeRequestsController do end describe 'GET terraform_reports' do - let(:merge_request) do + let_it_be(:merge_request) do create(:merge_request, :with_merge_request_pipeline, target_project: project, @@ -1271,7 +1267,7 @@ RSpec.describe Projects::MergeRequestsController do end describe 'GET test_reports' do - let(:merge_request) do + let_it_be(:merge_request) do create(:merge_request, :with_diffs, :with_merge_request_pipeline, @@ -1382,7 +1378,7 @@ RSpec.describe Projects::MergeRequestsController do end describe 'GET accessibility_reports' do - let(:merge_request) do + let_it_be(:merge_request) do create(:merge_request, :with_diffs, :with_merge_request_pipeline, @@ -1419,7 +1415,7 @@ RSpec.describe Projects::MergeRequestsController do end context 'permissions on a public project with private CI/CD' do - let(:project) { create(:project, :repository, :public, :builds_private) } + let(:project) { project_public_with_private_builds } let(:accessibility_comparison) { { status: :parsed, data: { summary: 1 } } } context 'while signed out' do @@ -1505,7 +1501,7 @@ RSpec.describe Projects::MergeRequestsController do describe 'POST remove_wip' do before do merge_request.title = merge_request.wip_title - merge_request.save + merge_request.save! post :remove_wip, params: { @@ -1626,7 +1622,7 @@ RSpec.describe Projects::MergeRequestsController do it 'links to the environment on that project', :sidekiq_might_not_need_inline do get_ci_environments_status - expect(json_response.first['url']).to match /#{forked.full_path}/ + expect(json_response.first['url']).to match(/#{forked.full_path}/) end context "when environment_target is 'merge_commit'", :sidekiq_might_not_need_inline do @@ -1653,7 +1649,7 @@ RSpec.describe Projects::MergeRequestsController do get_ci_environments_status(environment_target: 'merge_commit') expect(response).to have_gitlab_http_status(:ok) - expect(json_response.first['url']).to match /#{project.full_path}/ + expect(json_response.first['url']).to match(/#{project.full_path}/) end end end @@ -1773,7 +1769,7 @@ RSpec.describe Projects::MergeRequestsController do context 'with project member visibility on a public project' do let(:user) { create(:user) } - let(:project) { create(:project, :repository, :public, :builds_private) } + let(:project) { project_public_with_private_builds } it 'returns pipeline data to project members' do project.add_developer(user) @@ -1999,4 +1995,21 @@ RSpec.describe Projects::MergeRequestsController do expect(assigns(:noteable)).not_to be_nil end end + + describe 'POST export_csv' do + subject { post :export_csv, params: { namespace_id: project.namespace, project_id: project } } + + it 'redirects to the merge request index' do + subject + + expect(response).to redirect_to(project_merge_requests_path(project)) + expect(response.flash[:notice]).to match(/\AYour CSV export has started/i) + end + + it 'enqueues an IssuableExportCsvWorker worker' do + expect(IssuableExportCsvWorker).to receive(:perform_async).with(:merge_request, user.id, project.id, anything) + + subject + end + end end |