diff options
Diffstat (limited to 'actionpack/test/abstract')
-rw-r--r-- | actionpack/test/abstract/abstract_controller_test.rb | 77 |
1 files changed, 43 insertions, 34 deletions
diff --git a/actionpack/test/abstract/abstract_controller_test.rb b/actionpack/test/abstract/abstract_controller_test.rb index f70d497481..3b5013a47a 100644 --- a/actionpack/test/abstract/abstract_controller_test.rb +++ b/actionpack/test/abstract/abstract_controller_test.rb @@ -2,21 +2,21 @@ require 'abstract_unit' module AbstractController module Testing - + # Test basic dispatching. # ==== # * Call process # * Test that the response_body is set correctly class SimpleController < AbstractController::Base end - + class Me < SimpleController def index self.response_body = "Hello world" "Something else" - end + end end - + class TestBasic < ActiveSupport::TestCase test "dispatching works" do controller = Me.new @@ -24,7 +24,7 @@ module AbstractController assert_equal "Hello world", controller.response_body end end - + # Test Render mixin # ==== class RenderingController < AbstractController::Base @@ -36,24 +36,28 @@ module AbstractController if options.is_a?(String) options = {:_template_name => options} end - + options[:_prefix] = _prefix super end append_view_path File.expand_path(File.join(File.dirname(__FILE__), "views")) end - + class Me2 < RenderingController def index render "index.erb" end - + + def index_to_string + self.response_body = render_to_string "index.erb" + end + def action_with_ivars @my_ivar = "Hello" render "action_with_ivars.erb" end - + def naked_render render end @@ -76,12 +80,17 @@ module AbstractController @controller.process(:index) assert_equal "Hello from index.erb", @controller.response_body end - + + test "render_to_string works with a String as an argument" do + @controller.process(:index_to_string) + assert_equal "Hello from index.erb", @controller.response_body + end + test "rendering passes ivars to the view" do @controller.process(:action_with_ivars) assert_equal "Hello from index_with_ivars.erb", @controller.response_body end - + test "rendering with no template name" do @controller.process(:naked_render) assert_equal "Hello from naked_render.erb", @controller.response_body @@ -97,7 +106,7 @@ module AbstractController assert_equal "Hello from naked_render.erb", @controller.response_body end end - + # Test rendering with prefixes # ==== # * self._prefix is used when defined @@ -106,23 +115,23 @@ module AbstractController def self.prefix name.underscore end - + def _prefix self.class.prefix end end - + class Me3 < PrefixedViews def index render end - + def formatted self.formats = [:html] render end end - + class TestPrefixedViews < ActiveSupport::TestCase def setup @controller = Me3.new @@ -138,13 +147,13 @@ module AbstractController assert_equal "Hello from me3/formatted.html.erb", @controller.response_body end end - + # Test rendering with layouts # ==== # self._layout is used when defined class WithLayouts < PrefixedViews include Layouts - + private def self.layout(formats) begin @@ -160,21 +169,21 @@ module AbstractController def render_to_body(options = {}) options[:_layout] = options[:layout] || _default_layout({}) super - end + end end - + class Me4 < WithLayouts def index render end end - + class Me5 < WithLayouts def index render end end - + class TestLayouts < ActiveSupport::TestCase test "layouts are included" do controller = Me4.new @@ -182,7 +191,7 @@ module AbstractController assert_equal "Me4 Enter : Hello from me4/index.erb : Exit", controller.response_body end end - + # respond_to_action?(action_name) # ==== # * A method can be used as an action only if this method @@ -191,7 +200,7 @@ module AbstractController class DefaultRespondToActionController < AbstractController::Base def index() self.response_body = "success" end end - + class ActionMissingRespondToActionController < AbstractController::Base # No actions private @@ -199,19 +208,19 @@ module AbstractController self.response_body = "success" end end - + class RespondToActionController < AbstractController::Base; def index() self.response_body = "success" end - + def fail() self.response_body = "fail" end - + private def method_for_action(action_name) action_name.to_s != "fail" && action_name end end - + class TestRespondToAction < ActiveSupport::TestCase def assert_dispatch(klass, body = "success", action = :index) @@ -219,27 +228,27 @@ module AbstractController controller.process(action) assert_equal body, controller.response_body end - + test "an arbitrary method is available as an action by default" do assert_dispatch DefaultRespondToActionController, "success", :index end - + test "raises ActionNotFound when method does not exist and action_missing is not defined" do assert_raise(ActionNotFound) { DefaultRespondToActionController.new.process(:fail) } end - + test "dispatches to action_missing when method does not exist and action_missing is defined" do assert_dispatch ActionMissingRespondToActionController, "success", :ohai end - + test "a method is available as an action if respond_to_action? returns true" do assert_dispatch RespondToActionController, "success", :index end - + test "raises ActionNotFound if method is defined but respond_to_action? returns false" do assert_raise(ActionNotFound) { RespondToActionController.new.process(:fail) } end end - + end end |