diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2017-01-21 21:41:29 +0000 |
---|---|---|
committer | Grzegorz Bizon <grzegorz@gitlab.com> | 2017-01-21 21:41:29 +0000 |
commit | f6f52b43b59641f5e0c6f7aa47b1354ca3aeee32 (patch) | |
tree | a6490f060c6d3179661de14b9bc2622513867829 /spec | |
parent | bddd09c46534809876339e3c998440185c0f0036 (diff) | |
parent | d50b64dc752cfcf344311455c1ff640e8df72ed4 (diff) | |
download | gitlab-ce-f6f52b43b59641f5e0c6f7aa47b1354ca3aeee32.tar.gz |
Merge branch 'fix_auto_merging' into 'master'
Fix Merge When Pipeline Succeeds immediate merge bug
Closes #26969
See merge request !8685
Diffstat (limited to 'spec')
-rw-r--r-- | spec/features/merge_requests/merge_when_pipeline_succeeds_spec.rb | 60 |
1 files changed, 51 insertions, 9 deletions
diff --git a/spec/features/merge_requests/merge_when_pipeline_succeeds_spec.rb b/spec/features/merge_requests/merge_when_pipeline_succeeds_spec.rb index aa24a905001..2ea9c317bd1 100644 --- a/spec/features/merge_requests/merge_when_pipeline_succeeds_spec.rb +++ b/spec/features/merge_requests/merge_when_pipeline_succeeds_spec.rb @@ -32,19 +32,61 @@ feature 'Merge When Pipeline Succeeds', :feature, :js do expect(page).to have_button "Merge When Pipeline Succeeds" end - context "Merge When Pipeline Succeeds enabled" do - before do - click_button "Merge When Pipeline Succeeds" + describe 'enabling Merge When Pipeline Succeeds' do + shared_examples 'Merge When Pipeline Succeeds activator' do + it 'activates the Merge When Pipeline Succeeds feature' do + click_button "Merge When Pipeline Succeeds" + + expect(page).to have_content "Set by #{user.name} to be merged automatically when the pipeline succeeds." + expect(page).to have_content "The source branch will not be removed." + expect(page).to have_link "Cancel Automatic Merge" + visit_merge_request(merge_request) # Needed to refresh the page + expect(page).to have_content /enabled an automatic merge when the pipeline for \h{8} succeeds/i + end end - it 'activates Merge When Pipeline Succeeds feature' do - expect(page).to have_link "Cancel Automatic Merge" + context "when enabled immediately" do + it_behaves_like 'Merge When Pipeline Succeeds activator' + end + + context 'when enabled after pipeline status changed' do + before do + pipeline.run! - expect(page).to have_content "Set by #{user.name} to be merged automatically when the pipeline succeeds." - expect(page).to have_content "The source branch will not be removed." + # We depend on merge request widget being reloaded + # so we have to wait for asynchronous call to reload it + # and have_content expectation handles that. + # + expect(page).to have_content "Pipeline ##{pipeline.id} running" + end + + it_behaves_like 'Merge When Pipeline Succeeds activator' + end + + context 'when enabled after it was previously canceled' do + before do + click_button "Merge When Pipeline Succeeds" + click_link "Cancel Automatic Merge" + end + + it_behaves_like 'Merge When Pipeline Succeeds activator' + end - visit_merge_request(merge_request) # Needed to refresh the page - expect(page).to have_content /enabled an automatic merge when the pipeline for \h{8} succeeds/i + context 'when it was enabled and then canceled' do + let(:merge_request) do + create(:merge_request_with_diffs, + :merge_when_build_succeeds, + source_project: project, + title: 'Bug NS-04', + author: user, + merge_user: user) + end + + before do + click_link "Cancel Automatic Merge" + end + + it_behaves_like 'Merge When Pipeline Succeeds activator' end end end |