diff options
Diffstat (limited to 'spec/features/projects/commit/user_reverts_commit_spec.rb')
-rw-r--r-- | spec/features/projects/commit/user_reverts_commit_spec.rb | 91 |
1 files changed, 61 insertions, 30 deletions
diff --git a/spec/features/projects/commit/user_reverts_commit_spec.rb b/spec/features/projects/commit/user_reverts_commit_spec.rb index f3c364dab97..72c639a027e 100644 --- a/spec/features/projects/commit/user_reverts_commit_spec.rb +++ b/spec/features/projects/commit/user_reverts_commit_spec.rb @@ -6,58 +6,89 @@ RSpec.describe 'User reverts a commit', :js do include RepoHelpers let_it_be(:user) { create(:user) } - let(:project) { create(:project, :repository, namespace: user.namespace) } + let!(:project) { create_default(:project, :repository, namespace: user.namespace) } before do sign_in(user) - - visit(project_commit_path(project, sample_commit.id)) end - def revert_commit(create_merge_request: false) - find('.header-action-buttons .dropdown').click - find('[data-testid="revert-commit-link"]').click + context 'when clicking revert from the dropdown for a commit on pipelines tab' do + it 'launches the modal and is able to submit the revert' do + sha = '7d3b0f7cff5f37573aea97cebfd5692ea1689924' + create(:ci_empty_pipeline, sha: sha) + visit project_commit_path(project, project.commit(sha).id) + click_link 'Pipelines' - page.within('[data-testid="modal-commit"]') do - uncheck('create_merge_request') unless create_merge_request - click_button('Revert') + open_modal + + page.within(modal_selector) do + expect(page).to have_content('Revert this commit') + end end end - context 'without creating a new merge request' do - it 'reverts a commit' do - revert_commit + context 'when starting from the commit tab' do + before do + visit project_commit_path(project, sample_commit.id) + end + + context 'without creating a new merge request' do + it 'reverts a commit' do + revert_commit + + expect(page).to have_content('The commit has been successfully reverted.') + end + + it 'does not revert a previously reverted commit' do + revert_commit + # Visit the comment again once it was reverted. + visit project_commit_path(project, sample_commit.id) + + revert_commit - expect(page).to have_content('The commit has been successfully reverted.') + expect(page).to have_content('Sorry, we cannot revert this commit automatically.') + end end - it 'does not revert a previously reverted commit' do - revert_commit - # Visit the comment again once it was reverted. - visit project_commit_path(project, sample_commit.id) + context 'with creating a new merge request' do + it 'reverts a commit' do + revert_commit(create_merge_request: true) + + expect(page).to have_content('The commit has been successfully reverted. You can now submit a merge request to get this change into the original branch.') + expect(page).to have_content("From revert-#{Commit.truncate_sha(sample_commit.id)} into master") + end + end - revert_commit + context 'when the project is archived' do + let(:project) { create(:project, :repository, :archived, namespace: user.namespace) } - expect(page).to have_content('Sorry, we cannot revert this commit automatically.') + it 'does not show the revert link' do + open_dropdown + + expect(page).not_to have_link('Revert') + end end end - context 'with creating a new merge request' do - it 'reverts a commit' do - revert_commit(create_merge_request: true) + def revert_commit(create_merge_request: false) + open_modal - expect(page).to have_content('The commit has been successfully reverted. You can now submit a merge request to get this change into the original branch.') - expect(page).to have_content("From revert-#{Commit.truncate_sha(sample_commit.id)} into master") + page.within(modal_selector) do + uncheck('create_merge_request') unless create_merge_request + click_button('Revert') end end - context 'when the project is archived' do - let(:project) { create(:project, :repository, :archived, namespace: user.namespace) } + def open_dropdown + find('.header-action-buttons .dropdown').click + end - it 'does not show the revert link' do - find('.header-action-buttons .dropdown').click + def open_modal + open_dropdown + find('[data-testid="revert-commit-link"]').click + end - expect(page).not_to have_link('Revert') - end + def modal_selector + '[data-testid="modal-commit"]' end end |