Fix diff commenting results just after changing view

When you change the diff view (inline / side-by-side), we set a cookie based on
that new view. When you add a comment, we choose the style to use in the
response based on that cookie.

However, when you have just changed diff style, the request cookie will contain
the old value, so we should use the view param instead.
This commit is contained in:
Sean McGivern 2017-07-28 13:59:57 +01:00
parent 4ccecb7db4
commit fdfb4bbe5c
3 changed files with 20 additions and 3 deletions

View file

@ -15,7 +15,7 @@ module DiffHelper
def diff_view
@diff_view ||= begin
diff_views = %w(inline parallel)
diff_view = cookies[:diff_view]
diff_view = params[:view] || cookies[:diff_view]
diff_view = diff_views.first unless diff_views.include?(diff_view)
diff_view.to_sym
end

View file

@ -0,0 +1,4 @@
---
title: Fix display of new diff comments after changing b between diff views
merge_request:
author:

View file

@ -12,19 +12,32 @@ describe DiffHelper do
let(:diff_file) { Gitlab::Diff::File.new(diff, diff_refs: diff_refs, repository: repository) }
describe 'diff_view' do
it 'uses the view param over the cookie' do
controller.params[:view] = 'parallel'
helper.request.cookies[:diff_view] = 'inline'
expect(helper.diff_view).to eq :parallel
end
it 'returns the default value when the view param is invalid' do
controller.params[:view] = 'invalid'
expect(helper.diff_view).to eq :inline
end
it 'returns a valid value when cookie is set' do
helper.request.cookies[:diff_view] = 'parallel'
expect(helper.diff_view).to eq :parallel
end
it 'returns a default value when cookie is invalid' do
it 'returns the default value when cookie is invalid' do
helper.request.cookies[:diff_view] = 'invalid'
expect(helper.diff_view).to eq :inline
end
it 'returns a default value when cookie is nil' do
it 'returns the default value when cookie is nil' do
expect(helper.request.cookies).to be_empty
expect(helper.diff_view).to eq :inline