Make serializer lookup configurable (#1757)

This commit is contained in:
L. Preston Sego III
2016-11-16 12:38:40 -05:00
committed by Yohan Robert
parent d0de53cbb2
commit d31d741f43
10 changed files with 321 additions and 11 deletions

View File

@@ -15,6 +15,16 @@ module ActionController
end
end
module VHeader
class BookSerializer < ActiveModel::Serializer
attributes :title, :body
def body
'header'
end
end
end
module V3
class BookSerializer < ActiveModel::Serializer
attributes :title, :body
@@ -92,6 +102,14 @@ module ActionController
book = Book.new(title: 'New Post', body: 'Body')
render json: book
end
def namespace_set_by_request_headers
book = Book.new(title: 'New Post', body: 'Body')
version_from_header = request.headers['X-API_VERSION']
namespace = "ActionController::Serialization::NamespaceLookupTest::#{version_from_header}"
render json: book, namespace: namespace
end
end
end
end
@@ -102,6 +120,13 @@ module ActionController
@test_namespace = self.class.parent
end
test 'uses request headers to determine the namespace' do
request.env['X-API_VERSION'] = 'Api::VHeader'
get :namespace_set_by_request_headers
assert_serializer Api::VHeader::BookSerializer
end
test 'implicitly uses namespaced serializer' do
get :implicit_namespaced_serializer