1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #17642 from tgxworld/fix_template_assertion_on_assigns

Fix for assigns(:..) resetting template assertions
This commit is contained in:
Rafael Mendonça França 2014-11-17 11:50:09 -02:00
commit 5495771938
2 changed files with 20 additions and 4 deletions

View file

@ -334,9 +334,13 @@ module ActionDispatch
xml_http_request xhr get_via_redirect post_via_redirect).each do |method|
define_method(method) do |*args|
reset! unless integration_session
reset_template_assertion
# reset the html_document variable, but only for new get/post calls
@html_document = nil unless method == 'cookies' || method == 'assigns'
# reset the html_document variable, except for cookies/assigns calls
unless method == 'cookies' || method == 'assigns'
@html_document = nil
reset_template_assertion
end
integration_session.__send__(method, *args).tap do
copy_session_variables!
end

View file

@ -10,7 +10,7 @@ class AssertTemplateController < ActionController::Base
end
def render_with_layout
@variable_for_layout = nil
@variable_for_layout = 'hello'
render 'test/hello_world', layout: "layouts/standard"
end
@ -95,4 +95,16 @@ class AssertTemplateControllerTest < ActionDispatch::IntegrationTest
session.assert_template file: nil
end
end
def test_assigns_do_not_reset_template_assertion
get '/assert_template/render_with_layout'
assert_equal 'hello', assigns(:variable_for_layout)
assert_template layout: 'layouts/standard'
end
def test_cookies_do_not_reset_template_assertion
get '/assert_template/render_with_layout'
cookies
assert_template layout: 'layouts/standard'
end
end