diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-20 18:42:06 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-20 18:42:06 +0000 |
commit | 6e4e1050d9dba2b7b2523fdd1768823ab85feef4 (patch) | |
tree | 78be5963ec075d80116a932011d695dd33910b4e /spec/features/merge_request | |
parent | 1ce776de4ae122aba3f349c02c17cebeaa8ecf07 (diff) | |
download | gitlab-ce-6e4e1050d9dba2b7b2523fdd1768823ab85feef4.tar.gz |
Add latest changes from gitlab-org/gitlab@13-3-stable-ee
Diffstat (limited to 'spec/features/merge_request')
27 files changed, 192 insertions, 87 deletions
diff --git a/spec/features/merge_request/user_approves_spec.rb b/spec/features/merge_request/user_approves_spec.rb index d319fdcb87b..f401dd598f3 100644 --- a/spec/features/merge_request/user_approves_spec.rb +++ b/spec/features/merge_request/user_approves_spec.rb @@ -22,7 +22,7 @@ RSpec.describe 'Merge request > User approves', :js do verify_approvals_count_on_index! click_approval_button('Revoke approval') - expect(page).to have_content('No approval required; you can still approve') + expect(page).to have_content('Approval is optional') end def verify_approvals_count_on_index! diff --git a/spec/features/merge_request/user_comments_on_diff_spec.rb b/spec/features/merge_request/user_comments_on_diff_spec.rb index 30bf82e3665..3a199951b56 100644 --- a/spec/features/merge_request/user_comments_on_diff_spec.rb +++ b/spec/features/merge_request/user_comments_on_diff_spec.rb @@ -10,6 +10,7 @@ RSpec.describe 'User comments on a diff', :js do let(:merge_request) do create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test') end + let(:user) { create(:user) } before do diff --git a/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb b/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb index 23df7635aa1..1d3d76d3486 100644 --- a/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb +++ b/spec/features/merge_request/user_customizes_merge_commit_message_spec.rb @@ -15,6 +15,7 @@ RSpec.describe 'Merge request < User customizes merge commit message', :js do description: "Description\n\nclosing #{issue_1.to_reference}, #{issue_2.to_reference}" ) end + let(:textbox) { page.find(:css, '#merge-message-edit', visible: false) } let(:default_message) do [ @@ -24,6 +25,7 @@ RSpec.describe 'Merge request < User customizes merge commit message', :js do "See merge request #{merge_request.to_reference(full: true)}" ].join("\n\n") end + let(:message_with_description) do [ "Merge branch 'feature' into 'master'", diff --git a/spec/features/merge_request/user_edits_merge_request_spec.rb b/spec/features/merge_request/user_edits_merge_request_spec.rb index 6c5f508c8c6..364af8d8a76 100644 --- a/spec/features/merge_request/user_edits_merge_request_spec.rb +++ b/spec/features/merge_request/user_edits_merge_request_spec.rb @@ -85,13 +85,24 @@ RSpec.describe 'User edits a merge request', :js do end end - it 'changes the target branch' do - expect(page).to have_content('From master into feature') + describe 'changing target branch' do + it 'allows user to change target branch' do + expect(page).to have_content('From master into feature') - select2('merge-test', from: '#merge_request_target_branch') - click_button('Save changes') + select2('merge-test', from: '#merge_request_target_branch') + click_button('Save changes') + + expect(page).to have_content("Request to merge #{merge_request.source_branch} into merge-test") + expect(page).to have_content("changed target branch from #{merge_request.target_branch} to merge-test") + end - expect(page).to have_content("Request to merge #{merge_request.source_branch} into merge-test") - expect(page).to have_content("changed target branch from #{merge_request.target_branch} to merge-test") + describe 'merged merge request' do + let(:merge_request) { create(:merge_request, source_project: project, target_project: project, state: :merged) } + + it 'does not allow user to change target branch' do + expect(page).to have_content('From master into feature') + expect(page).not_to have_selector('.select2-container') + end + end end end diff --git a/spec/features/merge_request/user_jumps_to_discussion_spec.rb b/spec/features/merge_request/user_jumps_to_discussion_spec.rb new file mode 100644 index 00000000000..9bded1c5572 --- /dev/null +++ b/spec/features/merge_request/user_jumps_to_discussion_spec.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'User jumps to the next unresolved discussion', :js do + let(:project) { create(:project, :repository) } + let(:merge_request) do + create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test') + end + + let(:user) { create(:user) } + + before do + create(:discussion_note, noteable: merge_request, project: project, author: user) + + project.add_maintainer(user) + sign_in(user) + + visit(diffs_project_merge_request_path(project, merge_request)) + + wait_for_requests + end + + it 'jumps to overview tab' do + find('.discussion-next-btn').click + + expect(page).to have_css('.notes-tab.active') + end +end diff --git a/spec/features/merge_request/user_merges_immediately_spec.rb b/spec/features/merge_request/user_merges_immediately_spec.rb index 47dc09ae79f..0fb081ec507 100644 --- a/spec/features/merge_request/user_merges_immediately_spec.rb +++ b/spec/features/merge_request/user_merges_immediately_spec.rb @@ -12,6 +12,7 @@ RSpec.describe 'Merge requests > User merges immediately', :js do head_pipeline: pipeline, source_branch: pipeline.ref) end + let(:pipeline) do create(:ci_pipeline, project: project, ref: 'master', diff --git a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb index d5ff31de073..3dc49fb4dea 100644 --- a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb +++ b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb @@ -11,6 +11,7 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js do title: 'Bug NS-04', merge_params: { force_remove_source_branch: '1' }) end + let(:pipeline) do create(:ci_pipeline, project: project, sha: merge_request.diff_head_sha, @@ -115,6 +116,7 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js do merge_user: user, title: 'MepMep') end + let!(:build) do create(:ci_build, pipeline: pipeline) end @@ -154,7 +156,7 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js do context 'view merge request with MWPS enabled but automatically merge fails' do before do - merge_request.update( + merge_request.update!( merge_user: merge_request.author, merge_error: 'Something went wrong.' ) @@ -173,7 +175,7 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js do context 'view merge request with MWPS enabled but automatically merge fails' do before do - merge_request.update( + merge_request.update!( merge_user: merge_request.author, merge_error: 'Something went wrong.' ) diff --git a/spec/features/merge_request/user_posts_diff_notes_spec.rb b/spec/features/merge_request/user_posts_diff_notes_spec.rb index 6ecffb05009..9556142ecb8 100644 --- a/spec/features/merge_request/user_posts_diff_notes_spec.rb +++ b/spec/features/merge_request/user_posts_diff_notes_spec.rb @@ -193,7 +193,7 @@ RSpec.describe 'Merge request > User posts diff notes', :js do context 'when the MR only supports legacy diff notes' do before do - merge_request.merge_request_diff.update(start_commit_sha: nil) + merge_request.merge_request_diff.update!(start_commit_sha: nil) visit diffs_project_merge_request_path(project, merge_request, view: 'inline') end diff --git a/spec/features/merge_request/user_posts_notes_spec.rb b/spec/features/merge_request/user_posts_notes_spec.rb index 3c70819319d..4c079b98c90 100644 --- a/spec/features/merge_request/user_posts_notes_spec.rb +++ b/spec/features/merge_request/user_posts_notes_spec.rb @@ -10,6 +10,7 @@ RSpec.describe 'Merge request > User posts notes', :js do let(:merge_request) do create(:merge_request, source_project: project, target_project: project) end + let!(:note) do create(:note_on_merge_request, :with_attachment, noteable: merge_request, project: project) @@ -94,20 +95,31 @@ RSpec.describe 'Merge request > User posts notes', :js do end end - describe 'reply on a deleted conversation' do - before do - visit project_merge_request_path(project, merge_request) - end - - it 'shows an error message' do + describe 'replying to a comment' do + it 'makes the discussion resolvable' do find('.js-reply-button').click - note.delete page.within('.discussion-reply-holder') do fill_in 'note[note]', with: 'A reply' click_button 'Add comment now' - wait_for_requests - expect(page).to have_content('Your comment could not be submitted because discussion to reply to cannot be found') + + expect(page).to have_button('Resolve thread') + end + end + + context 'when comment is deleted' do + it 'shows an error message' do + find('.js-reply-button').click + + page.within('.discussion-reply-holder') do + fill_in 'note[note]', with: 'A reply' + + note.delete + + click_button 'Add comment now' + + expect(page).to have_content('Your comment could not be submitted because discussion to reply to cannot be found') + end end end end diff --git a/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb b/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb index aa3840b4376..f2adfd21e49 100644 --- a/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb +++ b/spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb @@ -23,7 +23,7 @@ RSpec.describe 'Merge request > User resolves diff notes and threads', :js do before do project.add_maintainer(user) sign_in(user) - note.destroy + note.destroy! visit_merge_request end diff --git a/spec/features/merge_request/user_resolves_wip_mr_spec.rb b/spec/features/merge_request/user_resolves_wip_mr_spec.rb index 34a3490a152..a9d4c4df507 100644 --- a/spec/features/merge_request/user_resolves_wip_mr_spec.rb +++ b/spec/features/merge_request/user_resolves_wip_mr_spec.rb @@ -11,6 +11,7 @@ RSpec.describe 'Merge request > User resolves Work in Progress', :js do title: 'WIP: Bug NS-04', merge_params: { force_remove_source_branch: '1' }) end + let(:pipeline) do create(:ci_pipeline, project: project, sha: merge_request.diff_head_sha, @@ -32,9 +33,9 @@ RSpec.describe 'Merge request > User resolves Work in Progress', :js do it 'retains merge request data after clicking Resolve WIP status' do expect(page.find('.ci-widget-content')).to have_content("Pipeline ##{pipeline.id}") - expect(page).to have_content "This is a Work in Progress" + expect(page).to have_content "This merge request is still a work in progress." - click_button('Resolve WIP status') + click_button('Mark as ready') wait_for_requests @@ -42,7 +43,7 @@ RSpec.describe 'Merge request > User resolves Work in Progress', :js do # merge request widget refreshes, which masks missing elements # that should already be present. expect(page.find('.ci-widget-content', wait: 0)).to have_content("Pipeline ##{pipeline.id}") - expect(page).not_to have_content('This is a Work in Progress') + expect(page).not_to have_content('This merge request is still a work in progress.') end end end diff --git a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb index 415e6b29d5a..7fad805866b 100644 --- a/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb +++ b/spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb @@ -16,6 +16,7 @@ RSpec.describe 'Merge request > User sees avatars on diff notes', :js do diff_refs: merge_request.diff_refs ) end + let!(:note) { create(:diff_note_on_merge_request, project: project, noteable: merge_request, position: position) } before do diff --git a/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb b/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb index ec2fb856be5..7f4249336fe 100644 --- a/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb +++ b/spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb @@ -26,7 +26,7 @@ RSpec.describe 'Merge request > User cherry-picks', :js do context 'without a merge commit' do before do merge_request.merge_commit_sha = nil - merge_request.save + merge_request.save! end it 'does not show a Cherry-pick button' do diff --git a/spec/features/merge_request/user_sees_closing_issues_message_spec.rb b/spec/features/merge_request/user_sees_closing_issues_message_spec.rb index baef547a480..d6cdc15005b 100644 --- a/spec/features/merge_request/user_sees_closing_issues_message_spec.rb +++ b/spec/features/merge_request/user_sees_closing_issues_message_spec.rb @@ -16,6 +16,7 @@ RSpec.describe 'Merge request > User sees closing issues message', :js do title: merge_request_title ) end + let(:merge_request_description) { 'Merge Request Description' } let(:merge_request_title) { 'Merge Request Title' } diff --git a/spec/features/merge_request/user_sees_discussions_spec.rb b/spec/features/merge_request/user_sees_discussions_spec.rb index ca8c4f84677..289c861739f 100644 --- a/spec/features/merge_request/user_sees_discussions_spec.rb +++ b/spec/features/merge_request/user_sees_discussions_spec.rb @@ -13,8 +13,8 @@ RSpec.describe 'Merge request > User sees threads', :js do end describe "Diff discussions" do - let!(:old_merge_request_diff) { merge_request.merge_request_diffs.create(diff_refs: outdated_diff_refs) } - let!(:new_merge_request_diff) { merge_request.merge_request_diffs.create } + let!(:old_merge_request_diff) { merge_request.merge_request_diffs.create!(diff_refs: outdated_diff_refs) } + let!(:new_merge_request_diff) { merge_request.merge_request_diffs.create! } let!(:outdated_discussion) { create(:diff_note_on_merge_request, project: project, noteable: merge_request, position: outdated_position).to_discussion } let!(:active_discussion) { create(:diff_note_on_merge_request, noteable: merge_request, project: project).to_discussion } let(:outdated_position) do @@ -24,6 +24,7 @@ RSpec.describe 'Merge request > User sees threads', :js do diff_refs: outdated_diff_refs ) end + let(:outdated_diff_refs) { project.commit("874797c3a73b60d2187ed6e2fcabd289ff75171e").diff_refs } before do diff --git a/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb b/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb index cae04dd1693..ac38b2b854c 100644 --- a/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb +++ b/spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb @@ -21,7 +21,7 @@ RSpec.describe 'Merge request > User sees merge button depending on unresolved t context 'with unresolved threads' do it 'does not allow to merge' do expect(page).not_to have_button 'Merge' - expect(page).to have_content('There are unresolved threads.') + expect(page).to have_content('Before this can be merged,') end end diff --git a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb index e2aa10d80dd..7b319f6aff8 100644 --- a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb +++ b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb @@ -8,7 +8,6 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } - let(:enable_mr_tabs_position_flag) { true } let(:config) do { @@ -27,7 +26,6 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', end before do - stub_feature_flags(mr_tabs_position: enable_mr_tabs_position_flag) stub_application_setting(auto_devops_enabled: false) stub_feature_flags(ci_merge_request_pipeline: true) stub_ci_pipeline_yaml_file(YAML.dump(config)) @@ -36,7 +34,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', end context 'when a user created a merge request in the parent project' do - let(:merge_request) do + let!(:merge_request) do create(:merge_request, source_project: project, target_project: project, @@ -53,7 +51,6 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', Ci::CreatePipelineService.new(project, user, ref: 'feature') .execute(:merge_request_event, merge_request: merge_request) end - let(:enable_mr_tabs_position_flag) { false } before do visit project_merge_request_path(project, merge_request) @@ -70,23 +67,11 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', end end - context 'when merge request tabs feature flag is disabled' do - it 'sees the latest detached merge request pipeline as the head pipeline', :sidekiq_might_not_need_inline do - page.within('.ci-widget-content') do - expect(page).to have_content("##{detached_merge_request_pipeline.id}") - end - end - end - - context 'when merge request tabs feature flag is enabled' do - let(:enable_mr_tabs_position_flag) { true } + it 'sees the latest detached merge request pipeline as the head pipeline', :sidekiq_might_not_need_inline do + click_link "Overview" - it 'sees the latest detached merge request pipeline as the head pipeline', :sidekiq_might_not_need_inline do - click_link "Overview" - - page.within('.ci-widget-content') do - expect(page).to have_content("##{detached_merge_request_pipeline.id}") - end + page.within('.ci-widget-content') do + expect(page).to have_content("##{detached_merge_request_pipeline.id}") end end @@ -144,6 +129,8 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', end it 'sees the latest detached merge request pipeline as the head pipeline' do + click_link 'Overview' + page.within('.ci-widget-content') do expect(page).to have_content("##{detached_merge_request_pipeline_2.id}") end @@ -152,6 +139,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', context 'when a user merges a merge request in the parent project', :sidekiq_might_not_need_inline do before do + click_link 'Overview' click_button 'Merge when pipeline succeeds' wait_for_requests @@ -179,6 +167,7 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', context 'when branch pipeline succeeds' do before do + click_link 'Overview' push_pipeline.succeed! wait_for_requests @@ -214,6 +203,8 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', end it 'sees the latest branch pipeline as the head pipeline', :sidekiq_might_not_need_inline do + click_link 'Overview' + page.within('.ci-widget-content') do expect(page).to have_content("##{push_pipeline.id}") end @@ -260,23 +251,11 @@ RSpec.describe 'Merge request > User sees pipelines triggered by merge request', end end - context 'when merge request tabs feature flag is enabled' do - it 'sees the latest detached merge request pipeline as the head pipeline' do - click_link "Overview" + it 'sees the latest detached merge request pipeline as the head pipeline' do + click_link "Overview" - page.within('.ci-widget-content') do - expect(page).to have_content("##{detached_merge_request_pipeline.id}") - end - end - end - - context 'when merge request tabs feature flag is disabled' do - let(:enable_mr_tabs_position_flag) { false } - - it 'sees the latest detached merge request pipeline as the head pipeline' do - page.within('.ci-widget-content') do - expect(page).to have_content("##{detached_merge_request_pipeline.id}") - end + page.within('.ci-widget-content') do + expect(page).to have_content("##{detached_merge_request_pipeline.id}") end end diff --git a/spec/features/merge_request/user_sees_merge_widget_spec.rb b/spec/features/merge_request/user_sees_merge_widget_spec.rb index ce49e9f4141..c7d26dfc814 100644 --- a/spec/features/merge_request/user_sees_merge_widget_spec.rb +++ b/spec/features/merge_request/user_sees_merge_widget_spec.rb @@ -302,7 +302,7 @@ RSpec.describe 'Merge request > User sees merge widget', :js do context 'view merge request with MWPS enabled but automatically merge fails' do before do - merge_request.update( + merge_request.update!( auto_merge_enabled: true, auto_merge_strategy: AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS, merge_user: merge_request.author, @@ -324,7 +324,7 @@ RSpec.describe 'Merge request > User sees merge widget', :js do context 'view merge request with MWPS enabled but automatically merge fails' do before do - merge_request.update( + merge_request.update!( merge_when_pipeline_succeeds: true, merge_user: merge_request.author, merge_error: 'Something went wrong' @@ -345,9 +345,9 @@ RSpec.describe 'Merge request > User sees merge widget', :js do context 'view merge request where fast-forward merge is not possible' do before do - project.update(merge_requests_ff_only_enabled: true) + project.update!(merge_requests_ff_only_enabled: true) - merge_request.update( + merge_request.update!( merge_user: merge_request.author, merge_status: :cannot_be_merged ) @@ -380,19 +380,19 @@ RSpec.describe 'Merge request > User sees merge widget', :js do end end - context 'user can merge into source project but cannot push to fork', :js do - let(:fork_project) { create(:project, :public, :repository) } + context 'user can merge into target project but cannot push to fork', :js do + let(:forked_project) { fork_project(project, nil, repository: true) } let(:user2) { create(:user) } before do project.add_maintainer(user2) sign_out(:user) sign_in(user2) - merge_request.update(target_project: fork_project) + merge_request.update!(source_project: forked_project) visit project_merge_request_path(project, merge_request) end - it 'user can merge into the source project' do + it 'user can merge into the target project', :sidekiq_inline do expect(page).to have_button('Merge', disabled: false) end @@ -409,7 +409,7 @@ RSpec.describe 'Merge request > User sees merge widget', :js do project.add_developer(user2) sign_out(:user) sign_in(user2) - merge_request.update( + merge_request.update!( source_project: forked_project, target_project: project, merge_params: { 'force_remove_source_branch' => '1' } @@ -879,7 +879,7 @@ RSpec.describe 'Merge request > User sees merge widget', :js do let!(:pipeline) { create(:ci_pipeline, status: 'success', sha: sha, project: project, ref: merge_request.source_branch) } before do - project.update( + project.update!( visibility_level: Gitlab::VisibilityLevel::PUBLIC, public_builds: false ) diff --git a/spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb b/spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb index 56092da5136..a9fefc89d6c 100644 --- a/spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb +++ b/spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb @@ -13,6 +13,7 @@ RSpec.describe 'Merge request > User sees pipelines from forked project', :js do target_project: target_project, description: 'Test merge request') end + let(:pipeline) do create(:ci_pipeline, project: forked_project, diff --git a/spec/features/merge_request/user_sees_pipelines_spec.rb b/spec/features/merge_request/user_sees_pipelines_spec.rb index d693eec91c8..5d41e49c478 100644 --- a/spec/features/merge_request/user_sees_pipelines_spec.rb +++ b/spec/features/merge_request/user_sees_pipelines_spec.rb @@ -123,14 +123,24 @@ RSpec.describe 'Merge request > User sees pipelines', :js do context 'when actor is a developer in parent project' do let(:actor) { developer_in_parent } - it 'creates a pipeline in the parent project' do + it 'creates a pipeline in the parent project when user proceeds with the warning' do visit project_merge_request_path(parent_project, merge_request) create_merge_request_pipeline + act_on_security_warning(action: 'Run Pipeline') check_pipeline(expected_project: parent_project) check_head_pipeline(expected_project: parent_project) end + + it 'does not create a pipeline in the parent project when user cancels the action' do + visit project_merge_request_path(parent_project, merge_request) + + create_merge_request_pipeline + act_on_security_warning(action: 'Cancel') + + check_no_pipelines + end end context 'when actor is a developer in fork project' do @@ -187,6 +197,19 @@ RSpec.describe 'Merge request > User sees pipelines', :js do expect(page.find('.pipeline-id')[:href]).to include(expected_project.full_path) end end + + def act_on_security_warning(action:) + page.within('#create-pipeline-for-fork-merge-request-modal') do + expect(page).to have_content('Are you sure you want to run this pipeline?') + click_button(action) + end + end + + def check_no_pipelines + page.within('.ci-table') do + expect(page).to have_selector('.commit', count: 1) + end + end end describe 'race condition' do diff --git a/spec/features/merge_request/user_sees_versions_spec.rb b/spec/features/merge_request/user_sees_versions_spec.rb index 75319c8a22d..60e054ddbee 100644 --- a/spec/features/merge_request/user_sees_versions_spec.rb +++ b/spec/features/merge_request/user_sees_versions_spec.rb @@ -5,14 +5,15 @@ require 'spec_helper' RSpec.describe 'Merge request > User sees versions', :js do let(:merge_request) do create(:merge_request).tap do |mr| - mr.merge_request_diff.destroy + mr.merge_request_diff.destroy! end end + let(:project) { merge_request.source_project } let(:user) { project.creator } - let!(:merge_request_diff1) { merge_request.merge_request_diffs.create(head_commit_sha: '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9') } - let!(:merge_request_diff2) { merge_request.merge_request_diffs.create(head_commit_sha: nil) } - let!(:merge_request_diff3) { merge_request.merge_request_diffs.create(head_commit_sha: '5937ac0a7beb003549fc5fd26fc247adbce4a52e') } + let!(:merge_request_diff1) { merge_request.merge_request_diffs.create!(head_commit_sha: '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9') } + let!(:merge_request_diff2) { merge_request.merge_request_diffs.create!(head_commit_sha: nil) } + let!(:merge_request_diff3) { merge_request.merge_request_diffs.create!(head_commit_sha: '5937ac0a7beb003549fc5fd26fc247adbce4a52e') } let!(:params) { {} } before do diff --git a/spec/features/merge_request/user_sees_wip_help_message_spec.rb b/spec/features/merge_request/user_sees_wip_help_message_spec.rb index 42fe18cfc93..204df5b3995 100644 --- a/spec/features/merge_request/user_sees_wip_help_message_spec.rb +++ b/spec/features/merge_request/user_sees_wip_help_message_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Merge request > User sees WIP help message' do +RSpec.describe 'Merge request > User sees draft help message' do let(:project) { create(:project, :public, :repository) } let(:user) { project.creator } @@ -11,8 +11,8 @@ RSpec.describe 'Merge request > User sees WIP help message' do sign_in(user) end - context 'with WIP commits' do - it 'shows a specific WIP hint' do + context 'with draft commits' do + it 'shows a specific draft hint' do visit project_new_merge_request_path( project, merge_request: { @@ -24,14 +24,14 @@ RSpec.describe 'Merge request > User sees WIP help message' do within_wip_explanation do expect(page).to have_text( - 'It looks like you have some WIP commits in this branch' + 'It looks like you have some draft commits in this branch' ) end end end - context 'without WIP commits' do - it 'shows the regular WIP message' do + context 'without draft commits' do + it 'shows the regular draft message' do visit project_new_merge_request_path( project, merge_request: { @@ -43,11 +43,11 @@ RSpec.describe 'Merge request > User sees WIP help message' do within_wip_explanation do expect(page).not_to have_text( - 'It looks like you have some WIP commits in this branch' + 'It looks like you have some draft commits in this branch' ) expect(page).to have_text( - "Start the title with WIP: to prevent a Work In Progress merge \ -request from being merged before it's ready" + "Start the title with Draft: or WIP: to prevent a merge request that is a \ +work in progress from being merged before it's ready." ) end end diff --git a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb index 0506d190487..39495832547 100644 --- a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb +++ b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb @@ -22,6 +22,7 @@ RSpec.describe 'User comments on a diff', :js do let(:merge_request) do create(:merge_request_with_diffs, source_project: project, target_project: project, source_branch: 'merge-test') end + let(:user) { create(:user) } before do diff --git a/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb b/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb index b864cb55785..96a1cd81c93 100644 --- a/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb +++ b/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb @@ -10,6 +10,7 @@ RSpec.describe 'Merge Request > User tries to access private project information name: 'nothing to see here', repository_access_level: ProjectFeature::PRIVATE) end + let(:owned_project) do create(:project, :public, :repository, namespace: current_user.namespace, diff --git a/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb b/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb new file mode 100644 index 00000000000..20a5910e66d --- /dev/null +++ b/spec/features/merge_request/user_views_auto_expanding_diff_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'User views diffs file-by-file', :js do + let(:merge_request) do + create(:merge_request, source_branch: 'squash-large-files', source_project: project, target_project: project) + end + + let(:project) { create(:project, :repository) } + let(:user) { create(:user, view_diffs_file_by_file: true) } + + before do + allow(Gitlab::Git::Diff).to receive(:size_limit).and_return(100.kilobytes) + allow(Gitlab::Git::Diff).to receive(:collapse_limit).and_return(10.kilobytes) + + project.add_developer(user) + + sign_in(user) + + visit(diffs_project_merge_request_path(project, merge_request, anchor: '5091f7b9dd6202e37eaedd73d7b75d82f25fdb61')) + + wait_for_requests + end + + it 'shows diffs file-by-file' do + page.within('#diffs') do + expect(page).not_to have_content('This diff is collapsed') + + click_button 'Next' + + expect(page).not_to have_content('This diff is collapsed') + end + end +end diff --git a/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb b/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb index c254a142349..abb313cb529 100644 --- a/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb +++ b/spec/features/merge_request/user_views_diffs_file_by_file_spec.rb @@ -6,6 +6,7 @@ RSpec.describe 'User views diffs file-by-file', :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, :repository) } let(:user) { create(:user, view_diffs_file_by_file: true) } diff --git a/spec/features/merge_request/user_views_diffs_spec.rb b/spec/features/merge_request/user_views_diffs_spec.rb index 14d10fc1c9f..537c0473fa4 100644 --- a/spec/features/merge_request/user_views_diffs_spec.rb +++ b/spec/features/merge_request/user_views_diffs_spec.rb @@ -6,6 +6,7 @@ RSpec.describe 'User views diffs', :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) } let(:view) { 'inline' } |