diff options
Diffstat (limited to 'spec/features/merge_request/user_sees_diff_spec.rb')
-rw-r--r-- | spec/features/merge_request/user_sees_diff_spec.rb | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/spec/features/merge_request/user_sees_diff_spec.rb b/spec/features/merge_request/user_sees_diff_spec.rb index a7713ed9964..7cd9ef80874 100644 --- a/spec/features/merge_request/user_sees_diff_spec.rb +++ b/spec/features/merge_request/user_sees_diff_spec.rb @@ -5,6 +5,7 @@ require 'spec_helper' RSpec.describe 'Merge request > User sees diff', :js do include ProjectForksHelper include RepoHelpers + include MergeRequestDiffHelpers let(:project) { create(:project, :public, :repository) } let(:merge_request) { create(:merge_request, source_project: project) } @@ -58,12 +59,12 @@ RSpec.describe 'Merge request > User sees diff', :js do let(:changelog_id) { Digest::SHA1.hexdigest("CHANGELOG") } context 'as author' do - it 'shows direct edit link', :sidekiq_might_not_need_inline do + it 'contains direct edit link', :sidekiq_might_not_need_inline do sign_in(author_user) visit diffs_project_merge_request_path(project, merge_request) # Throws `Capybara::Poltergeist::InvalidSelector` if we try to use `#hash` syntax - expect(page).to have_selector("[id=\"#{changelog_id}\"] .js-edit-blob", visible: false) + expect(page).to have_selector(".js-edit-blob", visible: false) end end @@ -72,6 +73,8 @@ RSpec.describe 'Merge request > User sees diff', :js do sign_in(user) visit diffs_project_merge_request_path(project, merge_request) + find_by_scrolling("[id=\"#{changelog_id}\"]") + # Throws `Capybara::Poltergeist::InvalidSelector` if we try to use `#hash` syntax find("[id=\"#{changelog_id}\"] .js-diff-more-actions").click find("[id=\"#{changelog_id}\"] .js-edit-blob").click @@ -82,7 +85,7 @@ RSpec.describe 'Merge request > User sees diff', :js do end context 'when file contains html' do - let(:current_user) { project.owner } + let(:current_user) { project.first_owner } let(:branch_name) {"test_branch"} it 'escapes any HTML special characters in the diff chunk header' do @@ -107,6 +110,7 @@ RSpec.describe 'Merge request > User sees diff', :js do CONTENT file_name = 'xss_file.rs' + file_hash = Digest::SHA1.hexdigest(file_name) create_file('master', file_name, file_content) merge_request = create(:merge_request, source_project: project) @@ -116,6 +120,8 @@ RSpec.describe 'Merge request > User sees diff', :js do visit diffs_project_merge_request_path(project, merge_request) + find_by_scrolling("[id='#{file_hash}']") + expect(page).to have_text("function foo<input> {") expect(page).to have_css(".line[lang='rust'] .k") end @@ -123,7 +129,7 @@ RSpec.describe 'Merge request > User sees diff', :js do context 'when file is stored in LFS' do let(:merge_request) { create(:merge_request, source_project: project) } - let(:current_user) { project.owner } + let(:current_user) { project.first_owner } context 'when LFS is enabled on the project' do before do @@ -136,7 +142,7 @@ RSpec.describe 'Merge request > User sees diff', :js do end context 'when file is an image', :js do - let(:file_name) { 'files/lfs/image.png' } + let(:file_name) { 'a/image.png' } it 'shows an error message' do expect(page).not_to have_content('could not be displayed because it is stored in LFS') @@ -144,7 +150,7 @@ RSpec.describe 'Merge request > User sees diff', :js do end context 'when file is not an image' do - let(:file_name) { 'files/lfs/ruby.rb' } + let(:file_name) { 'a/ruby.rb' } it 'shows an error message' do expect(page).to have_content('This source diff could not be displayed because it is stored in LFS') @@ -153,7 +159,14 @@ RSpec.describe 'Merge request > User sees diff', :js do end context 'when LFS is not enabled' do + let(:file_name) { 'a/lfs_object.iso' } + before do + allow(Gitlab.config.lfs).to receive(:disabled).and_return(true) + project.update_attribute(:lfs_enabled, false) + + create_file('master', file_name, project.repository.blob_at('master', 'files/lfs/lfs_object.iso').data) + visit diffs_project_merge_request_path(project, merge_request) end |