require 'spec_helper' feature 'Diffs URL', js: true, feature: true do before do login_as :admin @merge_request = create(:merge_request) @project = @merge_request.source_project end context 'when visit with */* as accept header' do before(:each) do page.driver.add_header('Accept', '*/*') end it 'renders the notes' do create :note_on_merge_request, project: @project, noteable: @merge_request, note: 'Rebasing with master' visit diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request) # Load notes and diff through AJAX expect(page).to have_css('.note-text', visible: false, text: 'Rebasing with master') expect(page).to have_css('.diffs.tab-pane.active') end end context 'when hovering over the parallel view diff file' do let(:comment_button_class) { '.add-diff-note' } before(:each) do visit diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request) click_link 'Side-by-side' # @old_line_number = first '.diff-line-num.old_line:not(.empty-cell)' # @new_line_number = first '.diff-line-num.new_line:not(.empty-cell)' # @old_line = first '.line_content[data-line-type="old"]' # @new_line = first '.line_content[data-line-type="new"]' end context 'with an old line on the left and no line on the right' do it 'should allow commenting on the left side' do puts first('//*[contains(concat(" ", @class, " "), " line_holder ") and child::*[contains(concat(" ", @class, " "), " line_content ") and contains(concat(" ", @class, " "), " old ")] and child::*[contains(concat(" ", @class, " ")," line_content ") and contains(concat(" ", @class, " ")," new ")]]') expect(page).to have_content 'NOPE' end it 'should not allow commenting on the right side' do end end context 'with no line on the left and a new line on the right' do it 'should allow commenting on the right side' do end it 'should not allow commenting on the left side' do end end context 'with an old line on the left and a new line on the right' do it 'should allow commenting on the left side' do end it 'should allow commenting on the right side' do end end context 'with an unchanged line on the left and an unchanged line on the right' do it 'should allow commenting on the left side' do end it 'should allow commenting on the right side' do end end context 'with a match line' do it 'should not allow commenting on the left side' do end it 'should not allow commenting on the right side' do end end # it 'shows a comment button on the old side when hovering over an old line number' do # @old_line_number.hover # expect(@old_line_number).to have_css comment_button_class # expect(@new_line_number).not_to have_css comment_button_class # end # # it 'shows a comment button on the old side when hovering over an old line' do # @old_line.hover # expect(@old_line_number).to have_css comment_button_class # expect(@new_line_number).not_to have_css comment_button_class # end # # it 'shows a comment button on the new side when hovering over a new line number' do # @new_line_number.hover # expect(@new_line_number).to have_css comment_button_class # expect(@old_line_number).not_to have_css comment_button_class # end # # it 'shows a comment button on the new side when hovering over a new line' do # @new_line.hover # expect(@new_line_number).to have_css comment_button_class # expect(@old_line_number).not_to have_css comment_button_class # end end context 'when hovering over the inline view diff file' do let(:comment_button_class) { '.add-diff-note' } before(:each) do visit diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request) click_link 'Inline' # @old_line_number = first '.diff-line-num.old_line:not(.unfold)' # @new_line_number = first '.diff-line-num.new_line:not(.unfold)' # @new_line = first '.line_content:not(.match)' end context 'with a new line' do it 'should allow commenting' do end end context 'with an old line' do it 'should allow commenting' do end end context 'with an unchanged line' do it 'should allow commenting' do end end context 'with a match line' do it 'should not allow commenting' do end end # it 'shows a comment button on the old side when hovering over an old line number' do # @old_line_number.hover # expect(@old_line_number).to have_css comment_button_class # expect(@new_line_number).not_to have_css comment_button_class # end # # it 'shows a comment button on the new side when hovering over a new line number' do # @new_line_number.hover # expect(@old_line_number).to have_css comment_button_class # expect(@new_line_number).not_to have_css comment_button_class # end # # it 'shows a comment button on the new side when hovering over a new line' do # @new_line.hover # expect(@old_line_number).to have_css comment_button_class # expect(@new_line_number).not_to have_css comment_button_class # end end # context 'when clicking a comment button' do # let(:test_note_comment) { 'this is a test note!' } # let(:note_class) { '.new-note' } # # before(:each) do # visit diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request) # click_link 'Inline' # first('.diff-line-num.old_line:not(.unfold)').hover # find('.add-diff-note').click # end # # it 'shows a note form' do # expect(page).to have_css note_class # end # # it 'can be submitted and viewed' do # fill_in 'note[note]', with: test_note_comment # click_button 'Comment' # expect(page).to have_content test_note_comment # end # # it 'can be closed' do # find('.note-form-actions .btn-cancel').click # expect(page).not_to have_css note_class # end # end end