diff --git a/lib/grape-active_model_serializers/formatter.rb b/lib/grape-active_model_serializers/formatter.rb index 5e58030..edede6d 100644 --- a/lib/grape-active_model_serializers/formatter.rb +++ b/lib/grape-active_model_serializers/formatter.rb @@ -36,7 +36,7 @@ module Grape end def build_options_from_endpoint(endpoint) - [endpoint.default_serializer_options || {}, endpoint.namespace_options, endpoint.route_options].reduce(:merge) + [endpoint.default_serializer_options || {}, endpoint.namespace_options, endpoint.route_options, endpoint.options, endpoint.options.fetch(:route_options)].reduce(:merge) end # array root is the innermost namespace name ('space') if there is one, diff --git a/spec/grape-active_model_serializers/formatter_spec.rb b/spec/grape-active_model_serializers/formatter_spec.rb index 830c2c6..283fec3 100644 --- a/spec/grape-active_model_serializers/formatter_spec.rb +++ b/spec/grape-active_model_serializers/formatter_spec.rb @@ -4,13 +4,32 @@ require 'grape-active_model_serializers/formatter' describe Grape::Formatter::ActiveModelSerializers do subject { Grape::Formatter::ActiveModelSerializers } + describe 'serializer options from namespace' do + let(:app) { Class.new(Grape::API) } + + before do + app.format :json + app.formatter :json, Grape::Formatter::ActiveModelSerializers + + app.namespace('space') do |ns| + ns.get('/', root: false) do + { user: { first_name: 'JR', last_name: 'HE' } } + end + end + end + + it 'should read serializer options like "root"' do + expect(described_class.build_options_from_endpoint(app.endpoints.first)).to include :root + end + end + describe '.fetch_serializer' do let(:user) { User.new(first_name: 'John') } if Grape::Util.const_defined?('InheritableSetting') - let(:endpoint) { Grape::Endpoint.new(Grape::Util::InheritableSetting.new, path: '/', method: 'foo') } + let(:endpoint) { Grape::Endpoint.new(Grape::Util::InheritableSetting.new, path: '/', method: 'foo', root: false) } else - let(:endpoint) { Grape::Endpoint.new({}, path: '/', method: 'foo') } + let(:endpoint) { Grape::Endpoint.new({}, path: '/', method: 'foo', root: false) } end let(:env) { { 'api.endpoint' => endpoint } } @@ -37,5 +56,9 @@ describe Grape::Formatter::ActiveModelSerializers do expect(subject.instance_variable_get('@only')).to eq([:only]) expect(subject.instance_variable_get('@except')).to eq([:except]) end + + it 'should read serializer options like "root"' do + expect(described_class.build_options_from_endpoint(endpoint).keys).to include :root + end end end