From c2a6cc86754adb3c5e064cebc58d206a52cb412e Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 3 Dec 2020 18:10:10 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../merge_requests/user_sees_empty_state_spec.rb | 40 ++++++ .../user_squashes_merge_request_spec.rb | 149 --------------------- .../merge_requests/user_views_diffs_commit_spec.rb | 19 --- 3 files changed, 40 insertions(+), 168 deletions(-) create mode 100644 spec/features/merge_requests/user_sees_empty_state_spec.rb delete mode 100644 spec/features/merge_requests/user_squashes_merge_request_spec.rb delete mode 100644 spec/features/merge_requests/user_views_diffs_commit_spec.rb (limited to 'spec/features/merge_requests') diff --git a/spec/features/merge_requests/user_sees_empty_state_spec.rb b/spec/features/merge_requests/user_sees_empty_state_spec.rb new file mode 100644 index 00000000000..ac07b31731d --- /dev/null +++ b/spec/features/merge_requests/user_sees_empty_state_spec.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'Merge request > User sees empty state' do + let(:project) { create(:project, :public, :repository) } + let(:user) { project.creator } + + before do + project.add_maintainer(user) + sign_in(user) + end + + it 'shows an empty state and a "New merge request" button' do + visit project_merge_requests_path(project) + + expect(page).to have_selector('.empty-state') + expect(page).to have_link 'New merge request', href: project_new_merge_request_path(project) + end + + context 'if there are merge requests' do + before do + create(:merge_request, source_project: project) + end + + it 'does not show an empty state' do + visit project_merge_requests_path(project) + + expect(page).not_to have_selector('.empty-state') + end + + it 'shows empty state when filter results empty' do + visit project_merge_requests_path(project, milestone_title: "1.0") + + expect(page).to have_selector('.empty-state') + expect(page).to have_content('Sorry, your filter produced no results') + expect(page).to have_content('To widen your search, change or remove filters above') + end + end +end 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 diff --git a/spec/features/merge_requests/user_views_diffs_commit_spec.rb b/spec/features/merge_requests/user_views_diffs_commit_spec.rb deleted file mode 100644 index cf92603972e..00000000000 --- a/spec/features/merge_requests/user_views_diffs_commit_spec.rb +++ /dev/null @@ -1,19 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'User views diff by commit', :js do - let(:merge_request) do - create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test') - end - - let(:project) { create(:project, :public, :repository) } - - before do - visit(diffs_project_merge_request_path(project, merge_request, commit_id: merge_request.diff_head_sha)) - end - - it 'shows full commit description by default' do - expect(page).to have_selector('.commit-row-description', visible: true) - end -end -- cgit v1.2.3