summaryrefslogtreecommitdiff
path: root/spec/features/merge_request
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-08-20 18:42:06 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-08-20 18:42:06 +0000
commit6e4e1050d9dba2b7b2523fdd1768823ab85feef4 (patch)
tree78be5963ec075d80116a932011d695dd33910b4e /spec/features/merge_request
parent1ce776de4ae122aba3f349c02c17cebeaa8ecf07 (diff)
downloadgitlab-ce-6e4e1050d9dba2b7b2523fdd1768823ab85feef4.tar.gz
Add latest changes from gitlab-org/gitlab@13-3-stable-ee
Diffstat (limited to 'spec/features/merge_request')
-rw-r--r--spec/features/merge_request/user_approves_spec.rb2
-rw-r--r--spec/features/merge_request/user_comments_on_diff_spec.rb1
-rw-r--r--spec/features/merge_request/user_customizes_merge_commit_message_spec.rb2
-rw-r--r--spec/features/merge_request/user_edits_merge_request_spec.rb23
-rw-r--r--spec/features/merge_request/user_jumps_to_discussion_spec.rb29
-rw-r--r--spec/features/merge_request/user_merges_immediately_spec.rb1
-rw-r--r--spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb6
-rw-r--r--spec/features/merge_request/user_posts_diff_notes_spec.rb2
-rw-r--r--spec/features/merge_request/user_posts_notes_spec.rb30
-rw-r--r--spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb2
-rw-r--r--spec/features/merge_request/user_resolves_wip_mr_spec.rb7
-rw-r--r--spec/features/merge_request/user_sees_avatar_on_diff_notes_spec.rb1
-rw-r--r--spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_closing_issues_message_spec.rb1
-rw-r--r--spec/features/merge_request/user_sees_discussions_spec.rb5
-rw-r--r--spec/features/merge_request/user_sees_merge_button_depending_on_unresolved_discussions_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb51
-rw-r--r--spec/features/merge_request/user_sees_merge_widget_spec.rb20
-rw-r--r--spec/features/merge_request/user_sees_pipelines_from_forked_project_spec.rb1
-rw-r--r--spec/features/merge_request/user_sees_pipelines_spec.rb25
-rw-r--r--spec/features/merge_request/user_sees_versions_spec.rb9
-rw-r--r--spec/features/merge_request/user_sees_wip_help_message_spec.rb18
-rw-r--r--spec/features/merge_request/user_suggests_changes_on_diff_spec.rb1
-rw-r--r--spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb1
-rw-r--r--spec/features/merge_request/user_views_auto_expanding_diff_spec.rb35
-rw-r--r--spec/features/merge_request/user_views_diffs_file_by_file_spec.rb1
-rw-r--r--spec/features/merge_request/user_views_diffs_spec.rb1
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' }