Skip to content
Snippets Groups Projects
Commit c082d92f authored by Sean McGivern's avatar Sean McGivern
Browse files

Allow expanding all diffs at once

parent 90a6be19
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -8,6 +8,10 @@ module DiffHelper
[marked_old_line, marked_new_line]
end
 
def expand_all?
@expand_all || params[:expand].present?
end
def render_diff_for_path(diffs, diff_refs, project)
diff_file = safe_diff_files(diffs, diff_refs).first
 
Loading
Loading
Loading
Loading
@@ -9,7 +9,7 @@
- if !project.repository.diffable?(blob)
.nothing-here-block This diff was suppressed by a .gitattributes entry.
- elsif diff_file.diff_lines.length > 0
- if diff_file.collapsed_by_default? && !@expand_all
- if diff_file.collapsed_by_default? && !expand_all?
- url = url_for(params.merge(action: :diff_for_path, path: diff_file.file_path, format: nil))
.nothing-here-block.diff-collapsed{data: { diff_for_path: url } }
This diff is collapsed. Click to expand it.
Loading
Loading
Loading
Loading
@@ -6,6 +6,8 @@
 
.content-block.oneline-block.files-changed
.inline-parallel-buttons
- unless expand_all?
= link_to 'Expand all', url_for(params.merge(expand: 1, format: 'html')), class: 'btn btn-default'
- if show_whitespace_toggle
- if current_controller?(:commit)
= commit_diff_whitespace_link(@project, @commit, class: 'hidden-xs')
Loading
Loading
Loading
Loading
@@ -135,4 +135,42 @@ feature 'Expand and collapse diffs', js: true, feature: true do
end
end
end
context 'expanding all diffs' do
before do
click_link('Expand all')
wait_for_ajax
execute_script('window.ajaxUris = []; $(document).ajaxSend(function(event, xhr, settings) { ajaxUris.push(settings.url) });')
end
it 'reloads the page with all diffs expanded' do
expect(small_diff).to have_selector('.code')
expect(small_diff).not_to have_selector('.nothing-here-block')
expect(large_diff).to have_selector('.code')
expect(large_diff).not_to have_selector('.nothing-here-block')
end
context 'collapsing an expanded diff' do
before { click_link('small_diff.md') }
it 'hides the diff content' do
expect(small_diff).not_to have_selector('.code')
expect(small_diff).to have_selector('.nothing-here-block')
end
context 're-expanding the same diff' do
before { click_link('small_diff.md') }
it 'shows the diff content' do
expect(small_diff).to have_selector('.code')
expect(small_diff).not_to have_selector('.nothing-here-block')
end
it 'does not make a new HTTP request' do
expect(evaluate_script('ajaxUris')).to be_empty
end
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment