diff options
author | Yehuda Katz <wycats@gmail.com> | 2009-03-23 12:07:34 -0700 |
---|---|---|
committer | Yehuda Katz <wycats@gmail.com> | 2009-03-23 12:07:34 -0700 |
commit | 34f058e082754bb726a4753fa26e8e8c082702c0 (patch) | |
tree | e6257c788360580559500b99c00bc2f49c8317c0 /actionpack/test | |
parent | 4a93148bfe0194acb7bcafd6c830d5b86372be6a (diff) | |
download | rails-34f058e082754bb726a4753fa26e8e8c082702c0.tar.gz rails-34f058e082754bb726a4753fa26e8e8c082702c0.tar.bz2 rails-34f058e082754bb726a4753fa26e8e8c082702c0.zip |
Add a bunch of tests for various render :action, layout combinations
Diffstat (limited to 'actionpack/test')
-rw-r--r-- | actionpack/test/new_base/fixture_view_path_test.rb | 60 | ||||
-rw-r--r-- | actionpack/test/new_base/render_action_test.rb | 281 | ||||
-rw-r--r-- | actionpack/test/new_base/test_helper.rb | 2 |
3 files changed, 234 insertions, 109 deletions
diff --git a/actionpack/test/new_base/fixture_view_path_test.rb b/actionpack/test/new_base/fixture_view_path_test.rb deleted file mode 100644 index 7792a14a20..0000000000 --- a/actionpack/test/new_base/fixture_view_path_test.rb +++ /dev/null @@ -1,60 +0,0 @@ -require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper") - -module HappyPath - - # This has no layout and it works - class RenderActionLolController < ActionController::Base2 - - self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({ - "happy_path/render_action_lol/hello_world.html.erb" => "Hello world!", - "happy_path/render_action_lol/goodbye_world.html.erb" => "Goodbye world!", - "happy_path/sexy_time/borat.html.erb" => "I LIKE!!!" - })] - - def render_action_hello_world - render :action => "hello_world" - end - - def render_action_goodbye_world - render :action => "goodbye_world" - end - - end - - class SexyTimeController < ActionController::Base2 - self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({ - "happy_path/render_action_lol/hello_world.html.erb" => "Hello world!", - "happy_path/render_action_lol/goodbye_world.html.erb" => "Goodbye world!", - "happy_path/sexy_time/borat.html.erb" => "I LIKE!!!" - })] - - def borat - render "borat" - end - end - - class TestRenderHelloAction < SimpleRouteCase - - describe "Rendering an action using :action => <String>" - - get "/happy_path/render_action/render_action_hello_world" - assert_body "Hello world!" - assert_status 200 - - end - - class TestRenderGoodbyeAction < SimpleRouteCase - describe "Goodbye" - - get "/happy_path/render_action_lol/render_action_goodbye_world" - assert_body "Goodbye world!" - assert_status 200 - end - - class TestRenderBorat < SimpleRouteCase - describe "Borat yo" - get "/happy_path/sexy_time/borat" - assert_body "I LIKE!!!" - assert_status 200 - end -end
\ No newline at end of file diff --git a/actionpack/test/new_base/render_action_test.rb b/actionpack/test/new_base/render_action_test.rb index 99dbfb878b..bbc8939af4 100644 --- a/actionpack/test/new_base/render_action_test.rb +++ b/actionpack/test/new_base/render_action_test.rb @@ -1,138 +1,323 @@ require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper") -module HappyPath +module RenderAction # This has no layout and it works - class RenderActionController < ActionController::Base2 + class BasicController < ActionController::Base2 self.view_paths = [ActionView::FixtureTemplate::FixturePath.new( - "happy_path/render_action/hello_world.html.erb" => "Hello world!" + "render_action/basic/hello_world.html.erb" => "Hello world!" )] - def render_action_hello_world + def hello_world render :action => "hello_world" end - def render_action_hello_world_as_string + def hello_world_as_string render "hello_world" end - def render_action_hello_world_as_string_with_options + def hello_world_as_string_with_options render "hello_world", :status => 404 end - def render_action_hello_world_as_symbol + def hello_world_as_symbol render :hello_world end - def render_action_hello_world_with_symbol + def hello_world_with_symbol render :action => :hello_world end + def hello_world_with_layout + render :action => "hello_world", :layout => true + end + + def hello_world_with_layout_false + render :action => "hello_world", :layout => false + end + + def hello_world_with_layout_nil + render :action => "hello_world", :layout => nil + end + + def hello_world_with_custom_layout + render :action => "hello_world", :layout => "greetings" + end + end - class TestRenderAction < SimpleRouteCase + class TestBasic < SimpleRouteCase describe "Rendering an action using :action => <String>" - get "/happy_path/render_action/render_action_hello_world" + get "/render_action/basic/hello_world" assert_body "Hello world!" assert_status 200 end - class TestRenderActionWithString < SimpleRouteCase + class TestWithString < SimpleRouteCase describe "Render an action using 'hello_world'" - get "/happy_path/render_action/render_action_hello_world_as_string" + get "/render_action/basic/hello_world_as_string" assert_body "Hello world!" assert_status 200 end - class TestRenderActionWithStringAndOptions < SimpleRouteCase + class TestWithStringAndOptions < SimpleRouteCase describe "Render an action using 'hello_world'" - get "/happy_path/render_action/render_action_hello_world_as_string_with_options" + get "/render_action/basic/hello_world_as_string_with_options" assert_body "Hello world!" assert_status 404 end - class TestRenderActionAsSymbol < SimpleRouteCase + class TestAsSymbol < SimpleRouteCase describe "Render an action using :hello_world" - get "/happy_path/render_action/render_action_hello_world_as_symbol" + get "/render_action/basic/hello_world_as_symbol" assert_body "Hello world!" assert_status 200 end - class TestRenderActionWithSymbol < SimpleRouteCase + class TestWithSymbol < SimpleRouteCase describe "Render an action using :action => :hello_world" - get "/happy_path/render_action/render_action_hello_world_with_symbol" + get "/render_action/basic/hello_world_with_symbol" assert_body "Hello world!" assert_status 200 end - # # ==== Render actions with layouts ==== - - class RenderActionWithLayoutController < ActionController::Base2 - # Set the view path to an application view structure with layouts - self.view_paths = self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({ - "happy_path/render_action_with_layout/hello_world.html.erb" => "Hello World!", - "layouts/application.html.erb" => "OHAI <%= yield %> KTHXBAI" - })] + class TestLayoutTrue < SimpleRouteCase + describe "rendering a normal template with full path with layout => true" - def hello_world - render :action => "hello_world" + test "raises an exception when requesting a layout and none exist" do + assert_raise(ActionView::MissingTemplate) { get "/render_action/basic/hello_world_with_layout" } end end - class RenderActionWithControllerLayoutController < ActionController::Base2 - self.view_paths = self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({ - "happy_path/render_action_with_controller_layout/hello_world.html.erb" => "Hello World!", - "layouts/happy_path/render_action_with_controller_layout.html.erb" => "With Controller Layout! <%= yield %> KTHXBAI" - })] + class TestLayoutFalse < SimpleRouteCase + describe "rendering a normal template with full path with layout => false" - def hello_world - render :action => "hello_world" + get "/render_action/basic/hello_world_with_layout_false" + assert_body "Hello world!" + assert_status 200 + end + + class TestLayoutNil < SimpleRouteCase + describe "rendering a normal template with full path with layout => :nil" + + get "/render_action/basic/hello_world_with_layout_nil" + assert_body "Hello world!" + assert_status 200 + end + + class TestCustomLayout < SimpleRouteCase + describe "rendering a normal template with full path with layout => 'greetings'" + + test "raises an exception when requesting a layout that does not exist" do + assert_raise(ActionView::MissingTemplate) { get "/render_action/basic/hello_world_with_custom_layout" } end end - class RenderActionWithControllerLayoutFirstController < ActionController::Base2 - self.view_paths = self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({ - "happy_path/render_action_with_controller_layout_first/hello_world.html.erb" => "Hello World!", - "layouts/application.html.erb" => "OHAI <%= yield %> KTHXBAI", - "layouts/happy_path/render_action_with_controller_layout_first.html.erb" => "With Controller Layout! <%= yield %> KTHXBAI" - })] +end + +module RenderActionWithApplicationLayout + + # # ==== Render actions with layouts ==== + + class BasicController < ActionController::Base2 + # Set the view path to an application view structure with layouts + self.view_paths = self.view_paths = [ActionView::FixtureTemplate::FixturePath.new( + "render_action_with_application_layout/basic/hello_world.html.erb" => "Hello World!", + "layouts/application.html.erb" => "OHAI <%= yield %> KTHXBAI", + "layouts/greetings.html.erb" => "Greetings <%= yield %> Bai" + )] def hello_world render :action => "hello_world" end + + def hello_world_with_layout + render :action => "hello_world", :layout => true + end + + def hello_world_with_layout_false + render :action => "hello_world", :layout => false + end + + def hello_world_with_layout_nil + render :action => "hello_world", :layout => nil + end + + def hello_world_with_custom_layout + render :action => "hello_world", :layout => "greetings" + end end - class TestRenderActionWithLayout < SimpleRouteCase + class TestDefaultLayout < SimpleRouteCase describe %( Render hello_world and implicitly use application.html.erb as a layout if no layout is specified and no controller layout is present ) - get "/happy_path/render_action_with_layout/hello_world" + get "/render_action_with_application_layout/basic/hello_world" + assert_body "OHAI Hello World! KTHXBAI" + assert_status 200 + end + + class TestLayoutTrue < SimpleRouteCase + describe "rendering a normal template with full path with layout => true" + + get "/render_action_with_application_layout/basic/hello_world_with_layout" assert_body "OHAI Hello World! KTHXBAI" assert_status 200 end - class TestRenderActionWithControllerLayout < SimpleRouteCase + class TestLayoutFalse < SimpleRouteCase + describe "rendering a normal template with full path with layout => false" + + get "/render_action_with_application_layout/basic/hello_world_with_layout_false" + assert_body "Hello World!" + assert_status 200 + end + + class TestLayoutNil < SimpleRouteCase + describe "rendering a normal template with full path with layout => :nil" + + get "/render_action_with_application_layout/basic/hello_world_with_layout_nil" + assert_body "Hello World!" + assert_status 200 + end + + class TestCustomLayout < SimpleRouteCase + describe "rendering a normal template with full path with layout => 'greetings'" + + get "/render_action_with_application_layout/basic/hello_world_with_custom_layout" + assert_body "Greetings Hello World! Bai" + assert_status 200 + end + +end + +module RenderActionWithControllerLayout + + class BasicController < ActionController::Base2 + self.view_paths = self.view_paths = [ActionView::FixtureTemplate::FixturePath.new( + "render_action_with_controller_layout/basic/hello_world.html.erb" => "Hello World!", + "layouts/render_action_with_controller_layout/basic.html.erb" => "With Controller Layout! <%= yield %> KTHXBAI" + )] + + def hello_world + render :action => "hello_world" + end + + def hello_world_with_layout + render :action => "hello_world", :layout => true + end + + def hello_world_with_layout_false + render :action => "hello_world", :layout => false + end + + def hello_world_with_layout_nil + render :action => "hello_world", :layout => nil + end + + def hello_world_with_custom_layout + render :action => "hello_world", :layout => "greetings" + end + end + + class TestControllerLayout < SimpleRouteCase describe "Render hello_world and implicitly use <controller_path>.html.erb as a layout." - - get "/happy_path/render_action_with_controller_layout/hello_world" + + get "/render_action_with_controller_layout/basic/hello_world" assert_body "With Controller Layout! Hello World! KTHXBAI" assert_status 200 end - class TestRenderActionWithControllerLayoutFirst < SimpleRouteCase + class TestLayoutTrue < SimpleRouteCase + describe "rendering a normal template with full path with layout => true" + + get "/render_action_with_controller_layout/basic/hello_world_with_layout" + assert_body "With Controller Layout! Hello World! KTHXBAI" + assert_status 200 + end + + class TestLayoutFalse < SimpleRouteCase + describe "rendering a normal template with full path with layout => false" + + get "/render_action_with_controller_layout/basic/hello_world_with_layout_false" + assert_body "Hello World!" + assert_status 200 + end + + class TestLayoutNil < SimpleRouteCase + describe "rendering a normal template with full path with layout => :nil" + + get "/render_action_with_controller_layout/basic/hello_world_with_layout_nil" + assert_body "Hello World!" + assert_status 200 + end + +end + +module RenderActionWithBothLayouts + + class BasicController < ActionController::Base2 + self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({ + "render_action_with_both_layouts/basic/hello_world.html.erb" => "Hello World!", + "layouts/application.html.erb" => "OHAI <%= yield %> KTHXBAI", + "layouts/render_action_with_both_layouts/basic.html.erb" => "With Controller Layout! <%= yield %> KTHXBAI" + })] + + def hello_world + render :action => "hello_world" + end + + def hello_world_with_layout + render :action => "hello_world", :layout => true + end + + def hello_world_with_layout_false + render :action => "hello_world", :layout => false + end + + def hello_world_with_layout_nil + render :action => "hello_world", :layout => nil + end + end + + class TestControllerLayoutFirst < SimpleRouteCase describe "Render hello_world and implicitly use <controller_path>.html.erb over application.html.erb as a layout" + + get "/render_action_with_both_layouts/basic/hello_world" + assert_body "With Controller Layout! Hello World! KTHXBAI" + assert_status 200 + end + + class TestLayoutTrue < SimpleRouteCase + describe "rendering a normal template with full path with layout => true" - get "/happy_path/render_action_with_controller_layout_first/hello_world" + get "/render_action_with_both_layouts/basic/hello_world_with_layout" assert_body "With Controller Layout! Hello World! KTHXBAI" assert_status 200 end + class TestLayoutFalse < SimpleRouteCase + describe "rendering a normal template with full path with layout => false" + + get "/render_action_with_both_layouts/basic/hello_world_with_layout_false" + assert_body "Hello World!" + assert_status 200 + end + + class TestLayoutNil < SimpleRouteCase + describe "rendering a normal template with full path with layout => :nil" + + get "/render_action_with_both_layouts/basic/hello_world_with_layout_nil" + assert_body "Hello World!" + assert_status 200 + end + end
\ No newline at end of file diff --git a/actionpack/test/new_base/test_helper.rb b/actionpack/test/new_base/test_helper.rb index 969ae56f05..bb4667007b 100644 --- a/actionpack/test/new_base/test_helper.rb +++ b/actionpack/test/new_base/test_helper.rb @@ -60,7 +60,7 @@ module ActionView #:nodoc: @hash[k.sub(/\.\w+$/, '')] = FixtureTemplate.new(v, k.split("/").last, self) end - super("") + super("fixtures://root") end def find_template(path) |