Make sure :layout => false is always used when rendering inside a layout

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1970 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Jamis Buck 2005-08-05 20:51:03 +00:00
parent 3d4a323776
commit a3469cadad
3 changed files with 14 additions and 2 deletions

View File

@ -1,5 +1,7 @@
*SVN*
* Make sure :layout => false is always used when rendering inside a layout
* Use raise instead of assert_not_nil in Test::Unit::TestCase#process to ensure that the test variables (controller, request, response) have been set
* Make sure assigns are built for every request when testing #1866

View File

@ -208,6 +208,7 @@ module ActionController #:nodoc:
template_with_options = options.is_a?(Hash)
if apply_layout?(template_with_options, options) && (layout = pick_layout(template_with_options, options, deprecated_layout))
options = options.merge :layout => false if template_with_options
logger.info("Rendering #{options} within #{layout}") if logger
if template_with_options
@ -266,4 +267,4 @@ module ActionController #:nodoc:
end
end
end
end
end

View File

@ -59,6 +59,10 @@ class NewRenderTestController < ActionController::Base
def rendering_without_layout
render :action => "hello_world", :layout => false
end
def layout_overriding_layout
render :action => "hello_world", :layout => "standard"
end
def rendering_nothing_on_layout
render :nothing => true
@ -154,7 +158,7 @@ class NewRenderTestController < ActionController::Base
"layouts/standard"
when "builder_layout_test"
"layouts/builder"
when "action_talk_to_layout"
when "action_talk_to_layout", "layout_overriding_layout"
"layouts/talk_from_action"
end
end
@ -261,6 +265,11 @@ class NewRenderTest < Test::Unit::TestCase
assert_equal "Hello world!", @response.body
end
def test_layout_overriding_layout
get :layout_overriding_layout
assert_no_match %r{<title>}, @response.body
end
def test_rendering_nothing_on_layout
get :rendering_nothing_on_layout
assert_equal " ", @response.body