diff options
Diffstat (limited to 'actionpack/test/template/render_test.rb')
-rw-r--r-- | actionpack/test/template/render_test.rb | 64 |
1 files changed, 53 insertions, 11 deletions
diff --git a/actionpack/test/template/render_test.rb b/actionpack/test/template/render_test.rb index 476e651757..9e827abbca 100644 --- a/actionpack/test/template/render_test.rb +++ b/actionpack/test/template/render_test.rb @@ -1,14 +1,14 @@ require 'abstract_unit' require 'controller/fake_models' -class ViewRenderTest < Test::Unit::TestCase - def setup +module RenderTestCases + def setup_view(paths) @assigns = { :secret => 'in the sauce' } - @view = ActionView::Base.new(ActionController::Base.view_paths, @assigns) + @view = ActionView::Base.new(paths, @assigns) end def test_render_file - assert_equal "Hello world!", @view.render("test/hello_world.erb") + assert_equal "Hello world!", @view.render(:file => "test/hello_world.erb") end def test_render_file_not_using_full_path @@ -16,11 +16,11 @@ class ViewRenderTest < Test::Unit::TestCase end def test_render_file_without_specific_extension - assert_equal "Hello world!", @view.render("test/hello_world") + assert_equal "Hello world!", @view.render(:file => "test/hello_world") end def test_render_file_at_top_level - assert_equal 'Elastica', @view.render('/shared') + assert_equal 'Elastica', @view.render(:file => '/shared') end def test_render_file_with_full_path @@ -29,20 +29,20 @@ class ViewRenderTest < Test::Unit::TestCase end def test_render_file_with_instance_variables - assert_equal "The secret is in the sauce\n", @view.render("test/render_file_with_ivar.erb") + assert_equal "The secret is in the sauce\n", @view.render(:file => "test/render_file_with_ivar.erb") end def test_render_file_with_locals locals = { :secret => 'in the sauce' } - assert_equal "The secret is in the sauce\n", @view.render("test/render_file_with_locals.erb", locals) + assert_equal "The secret is in the sauce\n", @view.render(:file => "test/render_file_with_locals.erb", :locals => locals) end def test_render_file_not_using_full_path_with_dot_in_path - assert_equal "The secret is in the sauce\n", @view.render("test/dot.directory/render_file_with_ivar") + assert_equal "The secret is in the sauce\n", @view.render(:file => "test/dot.directory/render_file_with_ivar") end def test_render_has_access_current_template - assert_equal "test/template.erb", @view.render("test/template.erb") + assert_equal "test/template.erb", @view.render(:file => "test/template.erb") end def test_render_update @@ -51,6 +51,10 @@ class ViewRenderTest < Test::Unit::TestCase assert_equal 'alert("Hello, World!");', @view.render(:update) { |page| page.alert('Hello, World!') } end + def test_render_partial_from_default + assert_equal "only partial", @view.render("test/partial_only") + end + def test_render_partial assert_equal "only partial", @view.render(:partial => "test/partial_only") end @@ -73,6 +77,10 @@ class ViewRenderTest < Test::Unit::TestCase assert_equal "5", @view.render(:partial => "test/counter", :locals => { :counter_counter => 5 }) end + def test_render_partial_with_locals_from_default + assert_equal "only partial", @view.render("test/partial_only", :counter_counter => 5) + end + def test_render_partial_with_errors @view.render(:partial => "test/raise") flunk "Render did not raise TemplateError" @@ -149,7 +157,7 @@ class ViewRenderTest < Test::Unit::TestCase end def test_render_fallbacks_to_erb_for_unknown_types - assert_equal "Hello, World!", @view.render(:inline => "Hello, World!", :type => :foo) + assert_equal "Hello, World!", @view.render(:inline => "Hello, World!", :type => :bar) end CustomHandler = lambda do |template| @@ -167,6 +175,17 @@ class ViewRenderTest < Test::Unit::TestCase assert_equal 'source: "Hello, <%= name %>!"', @view.render(:inline => "Hello, <%= name %>!", :locals => { :name => "Josh" }, :type => :foo) end + class LegacyHandler < ActionView::TemplateHandler + def render(template, local_assigns) + "source: #{template.source}; locals: #{local_assigns.inspect}" + end + end + + def test_render_legacy_handler_with_custom_type + ActionView::Template.register_template_handler :foo, LegacyHandler + assert_equal 'source: Hello, <%= name %>!; locals: {:name=>"Josh"}', @view.render(:inline => "Hello, <%= name %>!", :locals => { :name => "Josh" }, :type => :foo) + end + def test_render_with_layout assert_equal %(<title></title>\nHello world!\n), @view.render(:file => "test/hello_world.erb", :layout => "layouts/yield") @@ -177,3 +196,26 @@ class ViewRenderTest < Test::Unit::TestCase @view.render(:file => "test/nested_layout.erb", :layout => "layouts/yield") end end + +class CachedViewRenderTest < Test::Unit::TestCase + include RenderTestCases + + # Ensure view path cache is primed + def setup + view_paths = ActionController::Base.view_paths + assert view_paths.first.loaded? + setup_view(view_paths) + end +end + +class LazyViewRenderTest < Test::Unit::TestCase + include RenderTestCases + + # Test the same thing as above, but make sure the view path + # is not eager loaded + def setup + view_paths = ActionView::Base.process_view_paths(FIXTURE_LOAD_PATH) + assert !view_paths.first.loaded? + setup_view(view_paths) + end +end |