Commit 179be71d authored by Rémy Coutable's avatar Rémy Coutable

Merge branch '19702-define_show_html_vars' into 'master'

Be explicit on merge request discussion variables

## What does this MR do?

To avoid conditionals and to messing with request.format and accept headers to know in which format we're going to response I've decided to be explicit in when we need the discussion variables

## Why was this MR needed?

Solve a bug https://sentry.gitlap.com/gitlab/staginggitlabcom/issues/8492/

## What are the relevant issue numbers?

Closes #19702 

## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- ~~[ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)~~
- ~~[ ] API support added~~
- Tests
  - [ ] Added for this feature/bug
  - [ ] All builds are passing
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

See merge request !5204
parents 238f7c67 f1f9b5e2
...@@ -56,6 +56,7 @@ v 8.10.0 (unreleased) ...@@ -56,6 +56,7 @@ v 8.10.0 (unreleased)
- Add API endpoint for a group issues !4520 (mahcsig) - Add API endpoint for a group issues !4520 (mahcsig)
- Add Bugzilla integration !4930 (iamtjg) - Add Bugzilla integration !4930 (iamtjg)
- Instrument Rinku usage - Instrument Rinku usage
- Be explicit to define merge request discussion variables
- Metrics for Rouge::Plugins::Redcarpet and Rouge::Formatters::HTMLGitlab - Metrics for Rouge::Plugins::Redcarpet and Rouge::Formatters::HTMLGitlab
- RailsCache metris now includes fetch_hit/fetch_miss and read_hit/read_miss info. - RailsCache metris now includes fetch_hit/fetch_miss and read_hit/read_miss info.
- Allow [ci skip] to be in any case and allow [skip ci]. !4785 (simon_w) - Allow [ci skip] to be in any case and allow [skip ci]. !4785 (simon_w)
......
...@@ -56,7 +56,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController ...@@ -56,7 +56,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
def show def show
respond_to do |format| respond_to do |format|
format.html format.html { define_discussion_vars }
format.json do format.json do
render json: @merge_request render json: @merge_request
...@@ -82,7 +82,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController ...@@ -82,7 +82,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
@merge_request_diff = @merge_request.merge_request_diff @merge_request_diff = @merge_request.merge_request_diff
respond_to do |format| respond_to do |format|
format.html format.html { define_discussion_vars }
format.json { render json: { html: view_to_html_string("projects/merge_requests/show/_diffs") } } format.json { render json: { html: view_to_html_string("projects/merge_requests/show/_diffs") } }
end end
end end
...@@ -108,7 +108,11 @@ class Projects::MergeRequestsController < Projects::ApplicationController ...@@ -108,7 +108,11 @@ class Projects::MergeRequestsController < Projects::ApplicationController
def commits def commits
respond_to do |format| respond_to do |format|
format.html { render 'show' } format.html do
define_discussion_vars
render 'show'
end
format.json do format.json do
# Get commits from repository # Get commits from repository
# or from cache if already merged # or from cache if already merged
...@@ -123,7 +127,11 @@ class Projects::MergeRequestsController < Projects::ApplicationController ...@@ -123,7 +127,11 @@ class Projects::MergeRequestsController < Projects::ApplicationController
def builds def builds
respond_to do |format| respond_to do |format|
format.html { render 'show' } format.html do
define_discussion_vars
render 'show'
end
format.json { render json: { html: view_to_html_string('projects/merge_requests/show/_builds') } } format.json { render json: { html: view_to_html_string('projects/merge_requests/show/_builds') } }
end end
end end
...@@ -353,14 +361,11 @@ class Projects::MergeRequestsController < Projects::ApplicationController ...@@ -353,14 +361,11 @@ class Projects::MergeRequestsController < Projects::ApplicationController
@merge_request.unlock_mr @merge_request.unlock_mr
@merge_request.close @merge_request.close
end end
if request.format == :html || action_name == 'show'
define_show_html_vars
end
end end
# Discussion tab data is only required on html requests # Discussion tab data is rendered on html responses of actions
def define_show_html_vars # :show, :diff, :commits, :builds. but not when request the data through AJAX
def define_discussion_vars
# Build a note object for comment form # Build a note object for comment form
@note = @project.notes.new(noteable: @noteable) @note = @project.notes.new(noteable: @noteable)
......
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
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment