diff options
author | Calvin Correli <calvin@correli.me> | 2014-11-12 13:06:18 +0100 |
---|---|---|
committer | Guo Xiang Tan <tgx_world@hotmail.com> | 2014-11-17 09:49:07 +0800 |
commit | c3e8d15e8babd8c27aa04ced8cde40fdc124416a (patch) | |
tree | adb1f02ce1bc39fbe4eeb02a3220e664dd5f6843 /actionpack | |
parent | 2a31ea5545dbbeeafaaabb622a3053e361018898 (diff) | |
download | rails-c3e8d15e8babd8c27aa04ced8cde40fdc124416a.tar.gz rails-c3e8d15e8babd8c27aa04ced8cde40fdc124416a.tar.bz2 rails-c3e8d15e8babd8c27aa04ced8cde40fdc124416a.zip |
Fix for assigns(:..) resetting template assertions
When calling assigns(:...) or cookies(:...), template assertions would be reset, which they obviously shouldn't be.
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_dispatch/testing/integration.rb | 10 | ||||
-rw-r--r-- | actionpack/test/dispatch/template_assertions_test.rb | 14 |
2 files changed, 20 insertions, 4 deletions
diff --git a/actionpack/lib/action_dispatch/testing/integration.rb b/actionpack/lib/action_dispatch/testing/integration.rb index fb816aa875..731305227d 100644 --- a/actionpack/lib/action_dispatch/testing/integration.rb +++ b/actionpack/lib/action_dispatch/testing/integration.rb @@ -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 diff --git a/actionpack/test/dispatch/template_assertions_test.rb b/actionpack/test/dispatch/template_assertions_test.rb index 3c393f937b..7278754b49 100644 --- a/actionpack/test/dispatch/template_assertions_test.rb +++ b/actionpack/test/dispatch/template_assertions_test.rb @@ -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 |