mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fix controller_name for non default controller paths [#4901 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
parent
ed5c096d60
commit
995b1a243c
2 changed files with 39 additions and 1 deletions
|
@ -61,7 +61,7 @@ module ActionController
|
|||
# ==== Returns
|
||||
# String
|
||||
def self.controller_name
|
||||
@controller_name ||= controller_path.split("/").last
|
||||
@controller_name ||= self.name.demodulize.sub(/Controller$/, '').underscore
|
||||
end
|
||||
|
||||
# Delegates to the class' #controller_name
|
||||
|
|
|
@ -31,9 +31,17 @@ module Dispatching
|
|||
end
|
||||
|
||||
class EmptyController < ActionController::Base ; end
|
||||
class SubEmptyController < EmptyController ; end
|
||||
class NonDefaultPathController < ActionController::Base
|
||||
def self.controller_path; "i_am_not_default"; end
|
||||
end
|
||||
|
||||
module Submodule
|
||||
class ContainedEmptyController < ActionController::Base ; end
|
||||
class ContainedSubEmptyController < ContainedEmptyController ; end
|
||||
class ContainedNonDefaultPathController < ActionController::Base
|
||||
def self.controller_path; "i_am_extremly_not_default"; end
|
||||
end
|
||||
end
|
||||
|
||||
class BaseTest < Rack::TestCase
|
||||
|
@ -65,16 +73,46 @@ module Dispatching
|
|||
assert_equal EmptyController.controller_path, EmptyController.new.controller_path
|
||||
end
|
||||
|
||||
test "non-default controller path" do
|
||||
assert_equal 'i_am_not_default', NonDefaultPathController.controller_path
|
||||
assert_equal NonDefaultPathController.controller_path, NonDefaultPathController.new.controller_path
|
||||
end
|
||||
|
||||
test "sub controller path" do
|
||||
assert_equal 'dispatching/sub_empty', SubEmptyController.controller_path
|
||||
assert_equal SubEmptyController.controller_path, SubEmptyController.new.controller_path
|
||||
end
|
||||
|
||||
test "namespaced controller path" do
|
||||
assert_equal 'dispatching/submodule/contained_empty', Submodule::ContainedEmptyController.controller_path
|
||||
assert_equal Submodule::ContainedEmptyController.controller_path, Submodule::ContainedEmptyController.new.controller_path
|
||||
end
|
||||
|
||||
test "namespaced non-default controller path" do
|
||||
assert_equal 'i_am_extremly_not_default', Submodule::ContainedNonDefaultPathController.controller_path
|
||||
assert_equal Submodule::ContainedNonDefaultPathController.controller_path, Submodule::ContainedNonDefaultPathController.new.controller_path
|
||||
end
|
||||
|
||||
test "namespaced sub controller path" do
|
||||
assert_equal 'dispatching/submodule/contained_sub_empty', Submodule::ContainedSubEmptyController.controller_path
|
||||
assert_equal Submodule::ContainedSubEmptyController.controller_path, Submodule::ContainedSubEmptyController.new.controller_path
|
||||
end
|
||||
|
||||
test "controller name" do
|
||||
assert_equal 'empty', EmptyController.controller_name
|
||||
assert_equal 'contained_empty', Submodule::ContainedEmptyController.controller_name
|
||||
end
|
||||
|
||||
test "non-default path controller name" do
|
||||
assert_equal 'non_default_path', NonDefaultPathController.controller_name
|
||||
assert_equal 'contained_non_default_path', Submodule::ContainedNonDefaultPathController.controller_name
|
||||
end
|
||||
|
||||
test "sub controller name" do
|
||||
assert_equal 'sub_empty', SubEmptyController.controller_name
|
||||
assert_equal 'contained_sub_empty', Submodule::ContainedSubEmptyController.controller_name
|
||||
end
|
||||
|
||||
test "action methods" do
|
||||
assert_equal Set.new(%w(
|
||||
index
|
||||
|
|
Loading…
Reference in a new issue