From 1eb6189404f53ae59e4cb47ef9d5ad3a9bec3064 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Thu, 15 Mar 2012 03:21:10 +0100 Subject: Fix #5440 - multiple render_to_string breaks partials formats This fixes situation where rendering template to string sets `rendered_format` to the format rendered there. This is ok to have consistent formats rendered in partials, but it breaks on next renders if format is explicitly set or on last render where default format does not necessarily need to be the format of first rendered template. --- actionpack/test/controller/render_test.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'actionpack/test/controller/render_test.rb') diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb index e9b0fe7008..daa2676e22 100644 --- a/actionpack/test/controller/render_test.rb +++ b/actionpack/test/controller/render_test.rb @@ -549,6 +549,17 @@ class TestController < ActionController::Base render :template => "test/hello_world" end + def render_to_string_with_template_and_html_partial + @text = render_to_string :template => "test/with_partial", :formats => [:text] + @html = render_to_string :template => "test/with_partial", :formats => [:html] + render :template => "test/with_html_partial" + end + + def render_to_string_and_render_with_different_formats + @html = render_to_string :template => "test/with_partial", :formats => [:html] + render :template => "test/with_partial", :formats => [:text] + end + def partial_with_counter render :partial => "counter", :locals => { :counter_counter => 5 } end @@ -1263,6 +1274,21 @@ class RenderTest < ActionController::TestCase assert_equal "text/html", @response.content_type end + def test_render_to_string_with_template_and_html_partial + get :render_to_string_with_template_and_html_partial + assert_equal "**only partial**\n", assigns(:text) + assert_equal "only partial\n", assigns(:html) + assert_equal "only html partial\n", @response.body + assert_equal "text/html", @response.content_type + end + + def test_render_to_string_and_render_with_different_formats + get :render_to_string_and_render_with_different_formats + assert_equal "only partial\n", assigns(:html) + assert_equal "**only partial**\n", @response.body + assert_equal "text/plain", @response.content_type + end + def test_partial_with_counter get :partial_with_counter assert_equal "5", @response.body -- cgit v1.2.3