diff options
author | Jorge Bejar <jorge@wyeworks.com> | 2015-06-02 15:48:20 -0300 |
---|---|---|
committer | Santiago Pastorino <santiago@wyeworks.com> | 2015-06-11 16:54:16 -0300 |
commit | a2c9a7308474bc1d7fc35df9560c46125d94f5a4 (patch) | |
tree | 12fc2f3103b56d50e9d92bebbffe7087ff3e6fda | |
parent | ebcc15ca4ea22f8ace57a5251ceb8de4b917cd90 (diff) | |
download | rails-a2c9a7308474bc1d7fc35df9560c46125d94f5a4.tar.gz rails-a2c9a7308474bc1d7fc35df9560c46125d94f5a4.tar.bz2 rails-a2c9a7308474bc1d7fc35df9560c46125d94f5a4.zip |
Include ParamsWrapper in AC::API
ParamsWrapper was initially removed from API controllers according to
the following discusision:
https://github.com/rails-api/rails-api/issues/33
However, we're including it again so Rails API devs can decide
whether to enable or disable it.
-rw-r--r-- | actionpack/lib/action_controller/api.rb | 6 | ||||
-rw-r--r-- | actionpack/test/controller/api/params_wrapper_test.rb | 26 |
2 files changed, 31 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/api.rb b/actionpack/lib/action_controller/api.rb index 9dc96bd3e6..b4583a073b 100644 --- a/actionpack/lib/action_controller/api.rb +++ b/actionpack/lib/action_controller/api.rb @@ -128,7 +128,11 @@ module ActionController # Add instrumentations hooks at the bottom, to ensure they instrument # all the methods properly. - Instrumentation + Instrumentation, + + # Params wrapper should come before instrumentation so they are + # properly showed in logs + ParamsWrapper ] MODULES.each do |mod| diff --git a/actionpack/test/controller/api/params_wrapper_test.rb b/actionpack/test/controller/api/params_wrapper_test.rb new file mode 100644 index 0000000000..e40a39d829 --- /dev/null +++ b/actionpack/test/controller/api/params_wrapper_test.rb @@ -0,0 +1,26 @@ +require 'abstract_unit' + +class ParamsWrapperForApiTest < ActionController::TestCase + class UsersController < ActionController::API + attr_accessor :last_parameters + + wrap_parameters :person, format: [:json] + + def test + self.last_parameters = params.except(:controller, :action) + head :ok + end + end + + class Person; end + + tests UsersController + + def test_specify_wrapper_name + @request.env['CONTENT_TYPE'] = 'application/json' + post :test, params: { 'username' => 'sikachu' } + + expected = { 'username' => 'sikachu', 'person' => { 'username' => 'sikachu' }} + assert_equal expected, @controller.last_parameters + end +end |