diff options
Diffstat (limited to 'spec/features/merge_requests/user_squashes_merge_request_spec.rb')
-rw-r--r-- | spec/features/merge_requests/user_squashes_merge_request_spec.rb | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/spec/features/merge_requests/user_squashes_merge_request_spec.rb b/spec/features/merge_requests/user_squashes_merge_request_spec.rb deleted file mode 100644 index 84964bd0637..00000000000 --- a/spec/features/merge_requests/user_squashes_merge_request_spec.rb +++ /dev/null @@ -1,149 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'User squashes a merge request', :js do - let(:user) { create(:user) } - let(:project) { create(:project, :repository) } - let(:source_branch) { 'csv' } - let(:protected_source_branch) { false } - - let!(:original_head) { project.repository.commit('master') } - - shared_examples 'squash' do - it 'squashes the commits into a single commit, and adds a merge commit', :sidekiq_might_not_need_inline do - expect(page).to have_content('Merged') - - latest_master_commits = project.repository.commits_between(original_head.sha, 'master').map(&:raw) - - squash_commit = an_object_having_attributes(sha: a_string_matching(/\h{40}/), - message: a_string_starting_with(project.merge_requests.first.default_squash_commit_message), - author_name: user.name, - committer_name: user.name) - - merge_commit = an_object_having_attributes(sha: a_string_matching(/\h{40}/), - message: a_string_starting_with("Merge branch 'csv' into 'master'"), - author_name: user.name, - committer_name: user.name) - - expect(project.repository).not_to be_merged_to_root_ref(source_branch) - expect(latest_master_commits).to match([squash_commit, merge_commit]) - end - end - - shared_examples 'no squash' do - it 'accepts the merge request without squashing', :sidekiq_might_not_need_inline do - expect(page).to have_content('Merged') - expect(project.repository).to be_merged_to_root_ref(source_branch) - end - end - - def accept_mr - expect(page).to have_button('Merge') - - uncheck 'Delete source branch' unless protected_source_branch - click_on 'Merge' - end - - before do - # Prevent source branch from being removed so we can use be_merged_to_root_ref - # method to check if squash was performed or not - allow_next_instance_of(MergeRequest) do |instance| - allow(instance).to receive(:force_remove_source_branch?).and_return(false) - end - project.add_maintainer(user) - - sign_in user - end - - context 'when the MR has only one commit' do - let(:source_branch) { 'master' } - let(:target_branch) { 'branch-merged' } - let(:protected_source_branch) { true } - let(:source_sha) { project.commit(source_branch).sha } - let(:target_sha) { project.commit(target_branch).sha } - - before do - merge_request = create(:merge_request, source_project: project, target_project: project, source_branch: source_branch, target_branch: target_branch, squash: true) - - visit project_merge_request_path(project, merge_request) - end - - it 'accepts the merge request without issuing a squash request', :sidekiq_inline do - expect_next_instance_of(Gitlab::GitalyClient::OperationService) do |instance| - expect(instance).not_to receive(:user_squash) - end - - expect(project.repository.ancestor?(source_branch, target_branch)).to be_falsey - expect(page).not_to have_field('squash') - - accept_mr - - expect(page).to have_content('Merged') - - latest_target_commits = project.repository.commits_between(source_sha, target_sha).map(&:raw) - - expect(latest_target_commits.count).to eq(1) - expect(project.repository.ancestor?(source_branch, target_branch)).to be_truthy - end - end - - context 'when squash is enabled on merge request creation', :sidekiq_might_not_need_inline do - before do - visit project_new_merge_request_path(project, merge_request: { target_branch: 'master', source_branch: source_branch }) - check 'merge_request[squash]' - click_on 'Submit merge request' - wait_for_requests - end - - it 'shows the squash checkbox as checked' do - expect(page).to have_checked_field('squash') - end - - context 'when accepting with squash checked' do - before do - accept_mr - end - - include_examples 'squash' - end - - context 'when accepting and unchecking squash' do - before do - uncheck 'squash' - accept_mr - end - - include_examples 'no squash' - end - end - - context 'when squash is not enabled on merge request creation', :sidekiq_might_not_need_inline do - before do - visit project_new_merge_request_path(project, merge_request: { target_branch: 'master', source_branch: source_branch }) - click_on 'Submit merge request' - wait_for_requests - end - - it 'shows the squash checkbox as unchecked' do - expect(page).to have_unchecked_field('squash') - end - - context 'when accepting and checking squash' do - before do - check 'squash' - accept_mr - end - - include_examples 'squash' - end - - context 'when accepting with squash unchecked' do - before do - accept_mr - end - - include_examples 'no squash' - end - end -end |