Permalink
Browse files

Added tests to render helper that expect `render partial: @foo` to

automatically call @foo.to_partial_path

Calling `render @foo` allows local variables but not options to be
passed to the partial renderer. The correct way to render an object AND
pass options to the partial renderer is to pass the object in the
`:partial` parameter. However, there were previously no tests for this
behaviour (in `render_helper_test.rb` at least).
  • Loading branch information...
1 parent f34e0c4 commit 5b793a8add2d8fa57cde48ece3a9e20870a398f1 @iainbeeston iainbeeston committed Feb 12, 2014
Showing with 11 additions and 0 deletions.
  1. +1 −0 actionview/test/fixtures/customers/_customer.xml.erb
  2. +10 −0 actionview/test/template/render_test.rb
@@ -0,0 +1 @@
+<greeting><%= greeting %></greeting><name><%= customer.name %></name>
@@ -304,6 +304,16 @@ def test_render_partial_with_locals_using_string
assert_equal "Hola: david", @controller_view.render('customer_greeting', :greeting => 'Hola', :customer_greeting => Customer.new("david"))
end
+ def test_render_partial_with_object_uses_render_partial_path
+ assert_equal "Hello: lifo",
+ @controller_view.render(:partial => Customer.new("lifo"), :locals => {:greeting => "Hello"})
+ end
+
+ def test_render_partial_with_object_and_format_uses_render_partial_path
+ assert_equal "<greeting>Hello</greeting><name>lifo</name>",
+ @controller_view.render(:partial => Customer.new("lifo"), :formats => :xml, :locals => {:greeting => "Hello"})
+ end
+
def test_render_partial_using_object
assert_equal "Hello: lifo",
@controller_view.render(Customer.new("lifo"), :greeting => "Hello")

0 comments on commit 5b793a8

Please sign in to comment.