Namespace
Methods
S
T
Constants
CustomHandler = lambda do |template| "@output_buffer = ''\n" + "@output_buffer << 'source: #{template.source.inspect}'\n" end
 
Instance Public methods
setup_view(paths)
# File actionpack/test/template/render_test.rb, line 8
def setup_view(paths)
  @assigns = { :secret => 'in the sauce' }
  @view = ActionView::Base.new(paths, @assigns)
  @controller_view = TestController.new.view_context

  # Reload and register danish language for testing
  I18n.reload!
  I18n.backend.store_translations 'da', {}
  I18n.backend.store_translations 'pt-BR', {}

  # Ensure original are still the same since we are reindexing view paths
  assert_equal ORIGINAL_LOCALES, I18n.available_locales.map {|l| l.to_s }.sort
end
test_render_fallbacks_to_erb_for_unknown_types()
# File actionpack/test/template/render_test.rb, line 322
def test_render_fallbacks_to_erb_for_unknown_types
  assert_equal "Hello, World!", @view.render(:inline => "Hello, World!", :type => :bar)
end
test_render_file()
# File actionpack/test/template/render_test.rb, line 27
def test_render_file
  assert_equal "Hello world!", @view.render(:file => "test/hello_world")
end
test_render_file_at_top_level()
# File actionpack/test/template/render_test.rb, line 102
def test_render_file_at_top_level
  assert_equal 'Elastica', @view.render(:file => '/shared')
end
test_render_file_not_using_full_path()
# File actionpack/test/template/render_test.rb, line 31
def test_render_file_not_using_full_path
  assert_equal "Hello world!", @view.render(:file => "test/hello_world")
end
test_render_file_not_using_full_path_with_dot_in_path()
# File actionpack/test/template/render_test.rb, line 120
def test_render_file_not_using_full_path_with_dot_in_path
  assert_equal "The secret is in the sauce\n", @view.render(:file => "test/dot.directory/render_file_with_ivar")
end
test_render_file_with_dashed_locale()
# File actionpack/test/template/render_test.rb, line 95
def test_render_file_with_dashed_locale
  old_locale, @view.locale = @view.locale, :"pt-BR"
  assert_equal "Ola mundo", @view.render(:file => "test/hello_world")
ensure
  @view.locale = old_locale
end
test_render_file_with_errors()
# File actionpack/test/template/render_test.rb, line 195
def test_render_file_with_errors
  e = assert_raises(ActionView::Template::Error) { @view.render(:file => File.expand_path("test/_raise", FIXTURE_LOAD_PATH)) }
  assert_match %r!method.*doesnt_exist!, e.message
  assert_equal "", e.sub_template_message
  assert_equal "1", e.line_number
  assert_equal "1: <%= doesnt_exist %>", e.annoted_source_code.strip
  assert_equal File.expand_path("#{FIXTURE_LOAD_PATH}/test/_raise.html.erb"), e.file_name
end
test_render_file_with_format()

Test if :formats, :locale etc. options are passed correctly to the resolvers.

# File actionpack/test/template/render_test.rb, line 40
def test_render_file_with_format
  assert_match "<h1>No Comment</h1>", @view.render(:file => "comments/empty", :formats => [:html])
  assert_match "<error>No Comment</error>", @view.render(:file => "comments/empty", :formats => [:xml])
  assert_match "<error>No Comment</error>", @view.render(:file => "comments/empty", :formats => :xml)
end
test_render_file_with_full_path()
# File actionpack/test/template/render_test.rb, line 106
def test_render_file_with_full_path
  template_path = File.join(File.dirname(__FILE__), '../fixtures/test/hello_world')
  assert_equal "Hello world!", @view.render(:file => template_path)
end
test_render_file_with_handlers()
# File actionpack/test/template/render_test.rb, line 79
def test_render_file_with_handlers
  assert_equal "<h1>No Comment</h1>\n", @view.render(:file => "comments/empty", :handlers => [:builder])
  assert_equal "<h1>No Comment</h1>\n", @view.render(:file => "comments/empty", :handlers => :builder)
end
test_render_file_with_instance_variables()
# File actionpack/test/template/render_test.rb, line 111
def test_render_file_with_instance_variables
  assert_equal "The secret is in the sauce\n", @view.render(:file => "test/render_file_with_ivar")
end
test_render_file_with_locale()
# File actionpack/test/template/render_test.rb, line 70
def test_render_file_with_locale
  assert_equal "<h1>Kein Kommentar</h1>", @view.render(:file => "comments/empty", :locale => [:de])
  assert_equal "<h1>Kein Kommentar</h1>", @view.render(:file => "comments/empty", :locale => :de)
end
test_render_file_with_localization_on_context_level()
# File actionpack/test/template/render_test.rb, line 88
def test_render_file_with_localization_on_context_level
  old_locale, @view.locale = @view.locale, :da
  assert_equal "Hey verden", @view.render(:file => "test/hello_world")
ensure
  @view.locale = old_locale
end
test_render_file_with_locals()
# File actionpack/test/template/render_test.rb, line 115
def test_render_file_with_locals
  locals = { :secret => 'in the sauce' }
  assert_equal "The secret is in the sauce\n", @view.render(:file => "test/render_file_with_locals", :locals => locals)
end
test_render_file_without_specific_extension()
# File actionpack/test/template/render_test.rb, line 35
def test_render_file_without_specific_extension
  assert_equal "Hello world!", @view.render(:file => "test/hello_world")
end
test_render_ignores_templates_with_malformed_template_handlers()
# File actionpack/test/template/render_test.rb, line 352
def test_render_ignores_templates_with_malformed_template_handlers
  ActiveSupport::Deprecation.silence do
    %w(malformed malformed.erb malformed.html.erb malformed.en.html.erb).each do |name|
      assert_raises(ActionView::MissingTemplate) { @view.render(:file => "test/malformed/#{name}") }
    end
  end
end
test_render_inline()
# File actionpack/test/template/render_test.rb, line 314
def test_render_inline
  assert_equal "Hello, World!", @view.render(:inline => "Hello, World!")
end
test_render_inline_with_compilable_custom_type()
# File actionpack/test/template/render_test.rb, line 336
def test_render_inline_with_compilable_custom_type
  ActionView::Template.register_template_handler :foo, CustomHandler
  assert_equal 'source: "Hello, World!"', @view.render(:inline => "Hello, World!", :type => :foo)
end
test_render_inline_with_locals()
# File actionpack/test/template/render_test.rb, line 318
def test_render_inline_with_locals
  assert_equal "Hello, Josh!", @view.render(:inline => "Hello, <%= name %>!", :locals => { :name => "Josh" })
end
test_render_inline_with_locals_and_compilable_custom_type()
# File actionpack/test/template/render_test.rb, line 341
def test_render_inline_with_locals_and_compilable_custom_type
  ActionView::Template.register_template_handler :foo, CustomHandler
  assert_equal 'source: "Hello, <%= name %>!"', @view.render(:inline => "Hello, <%= name %>!", :locals => { :name => "Josh" }, :type => :foo)
end
test_render_inline_with_render_from_to_proc()
# File actionpack/test/template/render_test.rb, line 331
def test_render_inline_with_render_from_to_proc
  ActionView::Template.register_template_handler :ruby_handler, :source.to_proc
  assert_equal '3', @view.render(:inline => "(1 + 2).to_s", :type => :ruby_handler)
end
test_render_knows_about_types_registered_when_extensions_are_checked_earlier_in_initialization()
# File actionpack/test/template/render_test.rb, line 346
def test_render_knows_about_types_registered_when_extensions_are_checked_earlier_in_initialization
  ActionView::Template::Handlers.extensions
  ActionView::Template.register_template_handler :foo, CustomHandler
  assert ActionView::Template::Handlers.extensions.include?(:foo)
end
test_render_layout_with_a_nested_render_layout_call()
# File actionpack/test/template/render_test.rb, line 400
def test_render_layout_with_a_nested_render_layout_call
  assert_equal %Q(Before (Foo!)\nBefore (Bar!)\npartial html\nAfter\npartial with layout\n\nAfter),
    @view.render(:partial => 'test/partial_with_layout', :layout => 'test/layout_for_partial', :locals => { :name => 'Foo!'})
end
test_render_layout_with_a_nested_render_layout_call_using_block_with_render_content()
# File actionpack/test/template/render_test.rb, line 410
def test_render_layout_with_a_nested_render_layout_call_using_block_with_render_content
  assert_equal %Q(Before (Foo!)\nBefore (Bar!)\n\n  Content from inside layout!\n\nAfterpartial with layout\n\nAfter),
    @view.render(:partial => 'test/partial_with_layout_block_content', :layout => 'test/layout_for_partial', :locals => { :name => 'Foo!'})
end
test_render_layout_with_a_nested_render_layout_call_using_block_with_render_partial()
# File actionpack/test/template/render_test.rb, line 405
def test_render_layout_with_a_nested_render_layout_call_using_block_with_render_partial
  assert_equal %Q(Before (Foo!)\nBefore (Bar!)\n\n  partial html\n\nAfterpartial with layout\n\nAfter),
    @view.render(:partial => 'test/partial_with_layout_block_partial', :layout => 'test/layout_for_partial', :locals => { :name => 'Foo!'})
end
test_render_layout_with_block_and_other_partial_inside()
# File actionpack/test/template/render_test.rb, line 309
def test_render_layout_with_block_and_other_partial_inside
  render = @view.render(:layout => "test/layout_with_partial_and_yield") { "Yield!" }
  assert_equal "Before\npartial html\nYield!\nAfter\n", render
end
test_render_layout_with_block_and_yield()
# File actionpack/test/template/render_test.rb, line 375
def test_render_layout_with_block_and_yield
  assert_equal %Q(Content from block!\n),
    @view.render(:layout => "layouts/yield_only") { "Content from block!" }
end
test_render_layout_with_block_and_yield_with_params()
# File actionpack/test/template/render_test.rb, line 380
def test_render_layout_with_block_and_yield_with_params
  assert_equal %Q(Yield! Content from block!\n),
    @view.render(:layout => "layouts/yield_with_params") { |param| "#{param} Content from block!" }
end
test_render_layout_with_block_which_renders_another_partial_and_yields()
# File actionpack/test/template/render_test.rb, line 385
def test_render_layout_with_block_which_renders_another_partial_and_yields
  assert_equal %Q(partial html\nContent from block!\n),
    @view.render(:layout => "layouts/partial_and_yield") { "Content from block!" }
end
test_render_layout_with_object()
# File actionpack/test/template/render_test.rb, line 430
def test_render_layout_with_object
  assert_equal %Q(<title>David</title>),
    @view.render(:file => "test/layout_render_object")
end
test_render_missing_xml_partial_and_raise_missing_template()

TODO: The reason for this test is unclear, improve documentation

# File actionpack/test/template/render_test.rb, line 302
def test_render_missing_xml_partial_and_raise_missing_template
  @view.formats = [:xml]
  assert_raises(ActionView::MissingTemplate) { @view.render(:partial => "test/layout_for_partial") }
ensure
  @view.formats = nil
end
test_render_object()
# File actionpack/test/template/render_test.rb, line 204
def test_render_object
  assert_equal "Hello: david", @view.render(:partial => "test/customer", :object => Customer.new("david"))
end
test_render_object_with_array()
# File actionpack/test/template/render_test.rb, line 208
def test_render_object_with_array
  assert_equal "[1, 2, 3]", @view.render(:partial => "test/object_inspector", :object => [1, 2, 3])
end
test_render_partial()
# File actionpack/test/template/render_test.rb, line 128
def test_render_partial
  assert_equal "only partial", @view.render(:partial => "test/partial_only")
end
test_render_partial_and_fallback_to_layout()

TODO: The reason for this test is unclear, improve documentation

# File actionpack/test/template/render_test.rb, line 297
def test_render_partial_and_fallback_to_layout
  assert_equal "Before (Josh)\n\nAfter", @view.render(:partial => "test/layout_for_partial", :locals => { :name => "Josh" })
end
test_render_partial_and_layout_without_block_with_locals()
# File actionpack/test/template/render_test.rb, line 390
def test_render_partial_and_layout_without_block_with_locals
  assert_equal %Q(Before (Foo!)\npartial html\nAfter),
    @view.render(:partial => 'test/partial', :layout => 'test/layout_for_partial', :locals => { :name => 'Foo!'})
end
test_render_partial_and_layout_without_block_with_locals_and_rendering_another_partial()
# File actionpack/test/template/render_test.rb, line 395
def test_render_partial_and_layout_without_block_with_locals_and_rendering_another_partial
  assert_equal %Q(Before (Foo!)\npartial html\npartial with partial\n\nAfter),
    @view.render(:partial => 'test/partial_with_partial', :layout => 'test/layout_for_partial', :locals => { :name => 'Foo!'})
end
test_render_partial_at_top_level()
# File actionpack/test/template/render_test.rb, line 141
def test_render_partial_at_top_level
  # file fixtures/_top_level_partial_only (not fixtures/test)
  assert_equal 'top level partial', @view.render(:partial => '/top_level_partial_only')
end
test_render_partial_collection()
# File actionpack/test/template/render_test.rb, line 212
def test_render_partial_collection
  assert_equal "Hello: davidHello: mary", @view.render(:partial => "test/customer", :collection => [ Customer.new("david"), Customer.new("mary") ])
end
test_render_partial_collection_as_by_string()
# File actionpack/test/template/render_test.rb, line 216
def test_render_partial_collection_as_by_string
  assert_equal "david david davidmary mary mary",
    @view.render(:partial => "test/customer_with_var", :collection => [ Customer.new("david"), Customer.new("mary") ], :as => 'customer')
end
test_render_partial_collection_as_by_symbol()
# File actionpack/test/template/render_test.rb, line 221
def test_render_partial_collection_as_by_symbol
  assert_equal "david david davidmary mary mary",
    @view.render(:partial => "test/customer_with_var", :collection => [ Customer.new("david"), Customer.new("mary") ], :as => :customer)
end
test_render_partial_collection_without_as()
# File actionpack/test/template/render_test.rb, line 226
def test_render_partial_collection_without_as
  assert_equal "local_inspector,local_inspector_counter",
    @view.render(:partial => "test/local_inspector", :collection => [ Customer.new("mary") ])
end
test_render_partial_from_default()
# File actionpack/test/template/render_test.rb, line 124
def test_render_partial_from_default
  assert_equal "only partial", @view.render("test/partial_only")
end
test_render_partial_implicitly_use_format_of_the_rendered_template()
# File actionpack/test/template/render_test.rb, line 51
def test_render_partial_implicitly_use_format_of_the_rendered_template
  @view.lookup_context.formats = [:json]
  assert_equal "Hello world", @view.render(:template => "test/one", :formats => [:html])
end
test_render_partial_using_collection()
# File actionpack/test/template/render_test.rb, line 260
def test_render_partial_using_collection
  customers = [ Customer.new("Amazon"), Customer.new("Yahoo") ]
  assert_equal "Hello: AmazonHello: Yahoo",
    @controller_view.render(customers, :greeting => "Hello")
end
test_render_partial_using_collection_with_deprecated_partial_path()
# File actionpack/test/template/render_test.rb, line 285
def test_render_partial_using_collection_with_deprecated_partial_path
  assert_deprecated(/#model_name.*#partial_path.*#to_partial_path/) do
    customers = [
      CustomerWithDeprecatedPartialPath.new("nertzy"),
      CustomerWithDeprecatedPartialPath.new("peeja")
    ]
    assert_equal "Hello: nertzyHello: peeja",
      @controller_view.render(customers, :greeting => "Hello")
  end
end
test_render_partial_using_object()
# File actionpack/test/template/render_test.rb, line 255
def test_render_partial_using_object
  assert_equal "Hello: lifo",
    @controller_view.render(Customer.new("lifo"), :greeting => "Hello")
end
test_render_partial_using_object_with_deprecated_partial_path()
# File actionpack/test/template/render_test.rb, line 278
def test_render_partial_using_object_with_deprecated_partial_path
  assert_deprecated(/#model_name.*#partial_path.*#to_partial_path/) do
    assert_equal "Hello: nertzy",
      @controller_view.render(CustomerWithDeprecatedPartialPath.new("nertzy"), :greeting => "Hello")
  end
end
test_render_partial_using_string()
# File actionpack/test/template/render_test.rb, line 247
def test_render_partial_using_string
  assert_equal "Hello: Anonymous", @controller_view.render('customer')
end
test_render_partial_with_empty_array_should_return_nil()
# File actionpack/test/template/render_test.rb, line 243
def test_render_partial_with_empty_array_should_return_nil
  assert_nil @view.render(:partial => [])
end
test_render_partial_with_empty_collection_should_return_nil()
# File actionpack/test/template/render_test.rb, line 231
def test_render_partial_with_empty_collection_should_return_nil
  assert_nil @view.render(:partial => "test/customer", :collection => [])
end
test_render_partial_with_errors()
# File actionpack/test/template/render_test.rb, line 178
def test_render_partial_with_errors
  e = assert_raises(ActionView::Template::Error) { @view.render(:partial => "test/raise") }
  assert_match %r!method.*doesnt_exist!, e.message
  assert_equal "", e.sub_template_message
  assert_equal "1", e.line_number
  assert_equal "1: <%= doesnt_exist %>", e.annoted_source_code.strip
  assert_equal File.expand_path("#{FIXTURE_LOAD_PATH}/test/_raise.html.erb"), e.file_name
end
test_render_partial_with_format()
# File actionpack/test/template/render_test.rb, line 132
def test_render_partial_with_format
  assert_equal 'partial html', @view.render(:partial => 'test/partial')
end
test_render_partial_with_format_at_top_level()
# File actionpack/test/template/render_test.rb, line 146
def test_render_partial_with_format_at_top_level
  # file fixtures/_top_level_partial.html (not fixtures/test, with format extension)
  assert_equal 'top level partial html', @view.render(:partial => '/top_level_partial')
end
test_render_partial_with_incompatible_object()
# File actionpack/test/template/render_test.rb, line 173
def test_render_partial_with_incompatible_object
  e = assert_raises(ArgumentError) { @view.render(:partial => nil) }
  assert_equal "'#{nil.inspect}' is not an ActiveModel-compatible object that returns a valid partial path.", e.message
end
test_render_partial_with_invalid_name()
# File actionpack/test/template/render_test.rb, line 159
def test_render_partial_with_invalid_name
  e = assert_raises(ArgumentError) { @view.render(:partial => "test/200") }
  assert_equal "The partial name (test/200) is not a valid Ruby identifier; " +
    "make sure your partial name starts with a letter or underscore, " +
    "and is followed by any combinations of letters, numbers, or underscores.", e.message
end
test_render_partial_with_layout_raises_descriptive_error()
# File actionpack/test/template/render_test.rb, line 415
def test_render_partial_with_layout_raises_descriptive_error
  e = assert_raises(ActionView::MissingTemplate) { @view.render(:partial => 'test/partial', :layout => true) }
  assert_match "Missing partial /true with", e.message
end
test_render_partial_with_locals()
# File actionpack/test/template/render_test.rb, line 151
def test_render_partial_with_locals
  assert_equal "5", @view.render(:partial => "test/counter", :locals => { :counter_counter => 5 })
end
test_render_partial_with_locals_from_default()
# File actionpack/test/template/render_test.rb, line 155
def test_render_partial_with_locals_from_default
  assert_equal "only partial", @view.render("test/partial_only", :counter_counter => 5)
end
test_render_partial_with_locals_using_string()
# File actionpack/test/template/render_test.rb, line 251
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
test_render_partial_with_missing_filename()
# File actionpack/test/template/render_test.rb, line 166
def test_render_partial_with_missing_filename
  e = assert_raises(ArgumentError) { @view.render(:partial => "test/") }
  assert_equal "The partial name (test/) is not a valid Ruby identifier; " +
    "make sure your partial name starts with a letter or underscore, " +
    "and is followed by any combinations of letters, numbers, or underscores.", e.message
end
test_render_partial_with_nil_collection_should_return_nil()
# File actionpack/test/template/render_test.rb, line 235
def test_render_partial_with_nil_collection_should_return_nil
  assert_nil @view.render(:partial => "test/customer", :collection => nil)
end
test_render_partial_with_nil_values_in_collection()
# File actionpack/test/template/render_test.rb, line 239
def test_render_partial_with_nil_values_in_collection
  assert_equal "Hello: davidHello: Anonymous", @view.render(:partial => "test/customer", :collection => [ Customer.new("david"), nil ])
end
test_render_partial_with_selected_format()
# File actionpack/test/template/render_test.rb, line 136
def test_render_partial_with_selected_format
  assert_equal 'partial html', @view.render(:partial => 'test/partial', :formats => :html)
  assert_equal 'partial js', @view.render(:partial => 'test/partial', :formats => [:js])
end
test_render_sub_template_with_errors()
# File actionpack/test/template/render_test.rb, line 187
def test_render_sub_template_with_errors
  e = assert_raises(ActionView::Template::Error) { @view.render(:template => "test/sub_template_raise") }
  assert_match %r!method.*doesnt_exist!, e.message
  assert_equal "Trace of template inclusion: #{File.expand_path("#{FIXTURE_LOAD_PATH}/test/sub_template_raise.html.erb")}", e.sub_template_message
  assert_equal "1", e.line_number
  assert_equal File.expand_path("#{FIXTURE_LOAD_PATH}/test/_raise.html.erb"), e.file_name
end
test_render_template_with_a_missing_partial_of_another_format()
# File actionpack/test/template/render_test.rb, line 56
def test_render_template_with_a_missing_partial_of_another_format
  @view.lookup_context.formats = [:html]
  assert_raise ActionView::Template::Error, "Missing partial /missing with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder]}" do
    @view.render(:template => "with_format", :formats => [:json])
  end
end
test_render_template_with_format()
# File actionpack/test/template/render_test.rb, line 46
def test_render_template_with_format
  assert_match "<h1>No Comment</h1>", @view.render(:template => "comments/empty", :formats => [:html])
  assert_match "<error>No Comment</error>", @view.render(:template => "comments/empty", :formats => [:xml])
end
test_render_template_with_handlers()
# File actionpack/test/template/render_test.rb, line 84
def test_render_template_with_handlers
  assert_equal "<h1>No Comment</h1>\n", @view.render(:template => "comments/empty", :handlers => [:builder])
end
test_render_template_with_locale()
# File actionpack/test/template/render_test.rb, line 75
def test_render_template_with_locale
  assert_equal "<h1>Kein Kommentar</h1>", @view.render(:template => "comments/empty", :locale => [:de])
end
test_render_using_context_format_as_default()
# File actionpack/test/template/render_test.rb, line 63
def test_render_using_context_format_as_default
  @view.lookup_context.formats = [:html]
  assert_equal "partial html", @view.render('test/partial')
  assert_equal "partial js", @view.render(:partial => 'test/partial', :formats => :js)
  assert_equal "partial html", @view.render('test/partial')
end
test_render_with_file_in_layout()
# File actionpack/test/template/render_test.rb, line 425
def test_render_with_file_in_layout
  assert_equal %Q(\n<title>title</title>\n\n),
    @view.render(:file => "test/layout_render_file")
end
test_render_with_layout()
# File actionpack/test/template/render_test.rb, line 360
def test_render_with_layout
  assert_equal %Q(<title></title>\nHello world!\n),
    @view.render(:file => "test/hello_world", :layout => "layouts/yield")
end
test_render_with_layout_which_has_render_inline()
# File actionpack/test/template/render_test.rb, line 365
def test_render_with_layout_which_has_render_inline
  assert_equal %Q(welcome\nHello world!\n),
    @view.render(:file => "test/hello_world", :layout => "layouts/yield_with_render_inline_inside")
end
test_render_with_layout_which_renders_another_partial()
# File actionpack/test/template/render_test.rb, line 370
def test_render_with_layout_which_renders_another_partial
  assert_equal %Q(partial html\nHello world!\n),
    @view.render(:file => "test/hello_world", :layout => "layouts/yield_with_render_partial_inside")
end
test_render_with_nested_layout()
# File actionpack/test/template/render_test.rb, line 420
def test_render_with_nested_layout
  assert_equal %Q(<title>title</title>\n\n<div id="column">column</div>\n<div id="content">content</div>\n),
    @view.render(:file => "test/nested_layout", :layout => "layouts/yield")
end
test_render_without_options()
# File actionpack/test/template/render_test.rb, line 22
def test_render_without_options
  e = assert_raises(ArgumentError) { @view.render() }
  assert_match "You invoked render but did not give any of :partial, :template, :inline, :file or :text option.", e.message
end