diff --git a/actionpack/test/controller/base_tests.rb b/actionpack/test/controller/base_tests.rb new file mode 100644 index 0000000000..e442a95816 --- /dev/null +++ b/actionpack/test/controller/base_tests.rb @@ -0,0 +1,72 @@ +require File.dirname(__FILE__) + '/../abstract_unit' +require 'test/unit' + +# This file currently contains a few controller UTs +# I couldn't find where the current base tests are, so I created this file. +# If there aren't any base-specific UTs, then this file should grow as they +# are written. If there are, or there is a better place for these, then I will +# move them to the correct location. +# +# Nicholas Seckar aka. Ulysses + +# Provide a static version of the Controllers module instead of the auto-loading version. +# We don't want these tests to fail when dependencies are to blame. +module Controllers + module Submodule + class ContainedEmptyController < ActionController::Base + end + class ContainedNonEmptyController < ActionController::Base + def public_action + end + + hide_actions :hidden_action + def hidden_action + end + + def another_hidden_action + end + hide_action :another_hidden_action + end + class SubclassedController < ContainedNonEmptyController + hide_action :public_action # Hiding it here should not affect the superclass. + end + end + class EmptyController < ActionController::Base + include ActionController::Caching + end + class NonEmptyController < ActionController::Base + def public_action + end + + hide_actions :hidden_action + def hidden_action + end + end +end + +class ControllerClassTests < Test::Unit::TestCase + def test_controller_path + assert_equal 'empty', Controllers::EmptyController.controller_path + assert_equal 'submodule/contained_empty', Controllers::Submodule::ContainedEmptyController.controller_path + end + def test_controller_name + assert_equal 'empty', Controllers::EmptyController.controller_name + assert_equal 'contained_empty', Controllers::Submodule::ContainedEmptyController.controller_name + end +end + +class ControllerInstanceTests < Test::Unit::TestCase + def setup + @empty = Controllers::EmptyController.new + @contained = Controllers::Submodule::ContainedEmptyController.new + @empty_controllers = [@empty, @contained, Controllers::Submodule::SubclassedController.new] + + @non_empty_controllers = [Controllers::NonEmptyController.new, + Controllers::Submodule::ContainedNonEmptyController.new] + + end + def test_action_methods + @empty_controllers.each {|c| assert_equal [], c.send(:action_methods), "#{c.class.controller_path} should be empty!"} + @non_empty_controllers.each {|c| assert_equal ["public_action"], c.send(:action_methods), "#{c.class.controller_path} should not be empty!"} + end +end