aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test
diff options
context:
space:
mode:
authorShuhei Kagawa <s-kagawa@m3.com>2015-03-27 15:41:05 +0900
committerShuhei Kagawa <shuhei.kagawa@gmail.com>2015-03-28 10:40:58 +0900
commit1b0526eaac87342b5413183e082b51b10a6ace6e (patch)
treeae3d341383ed623a7a13b8104596cdba71d58496 /actionpack/test
parente1b967e7e0edc0f59b49558d2c3d4afd9125a59f (diff)
downloadrails-1b0526eaac87342b5413183e082b51b10a6ace6e.tar.gz
rails-1b0526eaac87342b5413183e082b51b10a6ace6e.tar.bz2
rails-1b0526eaac87342b5413183e082b51b10a6ace6e.zip
Return super in ActionController::Parameters.const_missing
The current implementation of ActionController::Parameters.const_missing returns `ActionController::Parameters.always_permitted_parameters` even if its `super` returns a constant without raising error. This prevents its subclass in a autoloading module/class from taking advantage of autoloading constants. class SomeParameters < ActionController::Parameters def do_something DefinedSomewhere.do_something end end In the code above, `DefinedSomewhere` is to be autoloaded with `Module.const_missing` but `ActionController::Parameters.const_missing` returns `always_permitted_parameters` instead of the autoloaded constant. This pull request fixes the issue respecting `const_missing`'s `super`.
Diffstat (limited to 'actionpack/test')
-rw-r--r--actionpack/test/controller/parameters/always_permitted_parameters_test.rb9
1 files changed, 8 insertions, 1 deletions
diff --git a/actionpack/test/controller/parameters/always_permitted_parameters_test.rb b/actionpack/test/controller/parameters/always_permitted_parameters_test.rb
index 059f310d49..59be08db54 100644
--- a/actionpack/test/controller/parameters/always_permitted_parameters_test.rb
+++ b/actionpack/test/controller/parameters/always_permitted_parameters_test.rb
@@ -1,5 +1,6 @@
require 'abstract_unit'
require 'action_controller/metal/strong_parameters'
+require 'minitest/mock'
class AlwaysPermittedParametersTest < ActiveSupport::TestCase
def setup
@@ -14,7 +15,13 @@ class AlwaysPermittedParametersTest < ActiveSupport::TestCase
test "shows deprecations warning on NEVER_UNPERMITTED_PARAMS" do
assert_deprecated do
- ActionController::Parameters::NEVER_UNPERMITTED_PARAMS
+ ActionController::Parameters::NEVER_UNPERMITTED_PARAMS
+ end
+ end
+
+ test "returns super on missing constant other than NEVER_UNPERMITTED_PARAMS" do
+ ActionController::Parameters.superclass.stub :const_missing, "super" do
+ assert_equal "super", ActionController::Parameters::NON_EXISTING_CONSTANT
end
end