diff options
Diffstat (limited to 'actionpack/test')
-rw-r--r-- | actionpack/test/abstract/abstract_controller_test.rb | 67 |
1 files changed, 33 insertions, 34 deletions
diff --git a/actionpack/test/abstract/abstract_controller_test.rb b/actionpack/test/abstract/abstract_controller_test.rb index 5a0a2aef10..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,19 +36,18 @@ 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" @@ -58,7 +57,7 @@ module AbstractController @my_ivar = "Hello" render "action_with_ivars.erb" end - + def naked_render render end @@ -81,7 +80,7 @@ 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 @@ -91,7 +90,7 @@ module AbstractController @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 @@ -107,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 @@ -116,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 @@ -148,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 @@ -170,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 @@ -192,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 @@ -201,7 +200,7 @@ module AbstractController class DefaultRespondToActionController < AbstractController::Base def index() self.response_body = "success" end end - + class ActionMissingRespondToActionController < AbstractController::Base # No actions private @@ -209,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) @@ -229,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 |