test/controller/new_render_test.rb in actionpack-1.9.1 vs test/controller/new_render_test.rb in actionpack-1.10.1
- old
+ new
@@ -57,10 +57,14 @@
end
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
end
@@ -79,22 +83,47 @@
end
def partial_only_with_layout
render :partial => "partial_only", :layout => true
end
+
+ def partial_with_locals
+ render :partial => "customer", :locals => { :customer => Customer.new("david") }
+ end
+
+ def partial_collection
+ render :partial => "customer", :collection => [ Customer.new("david"), Customer.new("mary") ]
+ end
+ def partial_collection_with_locals
+ render :partial => "customer_greeting", :collection => [ Customer.new("david"), Customer.new("mary") ], :locals => { :greeting => "Bonjour" }
+ end
+
+ def empty_partial_collection
+ render :partial => "customer", :collection => []
+ end
+
+ def partial_with_hash_object
+ render :partial => "hash_object", :object => {:first_name => "Sam"}
+ end
+
+ def partial_with_implicit_local_assignment
+ @customer = Customer.new("Marcel")
+ render :partial => "customer"
+ end
+
def hello_in_a_string
@customers = [ Customer.new("david"), Customer.new("mary") ]
render :text => "How's there? #{render_to_string("test/list")}"
end
def accessing_params_in_template
render :inline => "Hello: <%= params[:name] %>"
end
def accessing_params_in_template_with_layout
- render :inline => "Hello: <%= params[:name] %>", :layout => nil
+ render :layout => nil, :inline => "Hello: <%= params[:name] %>"
end
def render_with_explicit_template
render "test/hello_world"
end
@@ -112,10 +141,29 @@
def render_and_redirect
render :text => "hello"
redirect_to :action => "double_render"
end
+ def rendering_with_conflicting_local_vars
+ @name = "David"
+ def @template.name() nil end
+ render :action => "potential_conflicts"
+ end
+
+ def action_talk_to_layout
+ # Action template sets variable that's picked up by layout
+ end
+
+ def render_text_with_assigns
+ @hello = "world"
+ render :text => "foo"
+ end
+
+ def yield_content_for
+ render :action => "content_for", :layout => "yield"
+ end
+
def rescue_action(e) raise end
private
def determine_layout
case action_name
@@ -126,10 +174,12 @@
"accessing_params_in_template_with_layout",
"render_with_explicit_template"
"layouts/standard"
when "builder_layout_test"
"layouts/builder"
+ when "action_talk_to_layout", "layout_overriding_layout"
+ "layouts/talk_from_action"
end
end
end
NewRenderTestController.template_root = File.dirname(__FILE__) + "/../fixtures/"
@@ -188,19 +238,26 @@
def test_private_methods
assert_raises(ActionController::UnknownAction, "No action responded to [determine_layout]") { get :determine_layout }
end
def test_access_to_request_in_view
+ view_internals_old_value = ActionController::Base.view_controller_internals
+
ActionController::Base.view_controller_internals = false
+ ActionController::Base.protected_variables_cache = nil
get :hello_world
assert_nil(assigns["request"])
ActionController::Base.view_controller_internals = true
+ ActionController::Base.protected_variables_cache = nil
get :hello_world
assert_kind_of ActionController::AbstractRequest, assigns["request"]
+
+ ActionController::Base.view_controller_internals = view_internals_old_value
+ ActionController::Base.protected_variables_cache = nil
end
def test_render_xml
get :render_xml_hello
assert_equal "<html>\n <p>Hello David</p>\n<p>This is grand!</p>\n</html>\n", @response.body
@@ -224,25 +281,25 @@
def test_rendering_without_layout
get :rendering_without_layout
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
+ assert_equal " ", @response.body
end
def test_render_xml_with_layouts
get :builder_layout_test
assert_equal "<wrapper>\n<html>\n <p>Hello </p>\n<p>This is grand!</p>\n</html>\n</wrapper>\n", @response.body
end
- # def test_partials_list
- # get :partials_list
- # assert_equal "goodbyeHello: davidHello: marygoodbye\n", @response.body
- # end
-
def test_partial_only
get :partial_only
assert_equal "only partial", @response.body
end
@@ -284,7 +341,62 @@
assert_raises(ActionController::DoubleRenderError) { get :double_redirect }
end
def test_render_and_redirect
assert_raises(ActionController::DoubleRenderError) { get :render_and_redirect }
+ end
+
+ def test_rendering_with_conflicting_local_vars
+ get :rendering_with_conflicting_local_vars
+ assert_equal("First: David\nSecond: Stephan\nThird: David\nFourth: David\nFifth: ", @response.body)
+ end
+
+ def test_action_talk_to_layout
+ get :action_talk_to_layout
+ assert_equal "<title>Talking to the layout</title>\nAction was here!", @response.body
+ end
+
+ def test_partials_list
+ get :partials_list
+ assert_equal "goodbyeHello: davidHello: marygoodbye\n", @response.body
+ end
+
+ def test_partial_with_locals
+ get :partial_with_locals
+ assert_equal "Hello: david", @response.body
+ end
+
+ def test_partial_collection
+ get :partial_collection
+ assert_equal "Hello: davidHello: mary", @response.body
+ end
+
+ def test_partial_collection_with_locals
+ get :partial_collection_with_locals
+ assert_equal "Bonjour: davidBonjour: mary", @response.body
+ end
+
+ def test_empty_partial_collection
+ get :empty_partial_collection
+ assert_equal " ", @response.body
+ end
+
+ def test_partial_with_hash_object
+ get :partial_with_hash_object
+ assert_equal "Sam", @response.body
+ end
+
+ def test_partial_with_implicit_local_assignment
+ get :partial_with_implicit_local_assignment
+ assert_equal "Hello: Marcel", @response.body
+ end
+
+ def test_render_text_with_assigns
+ get :render_text_with_assigns
+ assert_equal "world", assigns["hello"]
+ end
+
+ def test_yield_content_for
+ get :yield_content_for
+ assert_equal "<title>Putting stuff in the title!</title>\n\nGreat stuff!\n", @response.body
end
end