Added the ability to turn off serializer inference

This commit is contained in:
jrhe 2013-04-04 21:07:05 +01:00
parent d3db8672ab
commit 65f6980dad
2 changed files with 22 additions and 7 deletions

View file

@ -4,10 +4,12 @@ module Grape
module Formatter
module ActiveModelSerializers
class << self
attr_accessor :infer_serializers
attr_reader :env
attr_reader :endpoint
ActiveModelSerializers.infer_serializers = true
def call(object, env)
@object = object
@env = env
@ -22,19 +24,17 @@ module Grape
end
private
def active_model_serializer
_active_model_serializer
end
def active_model_serializer?
!!active_model_serializer
end
def _active_model_serializer
def active_model_serializer
route_options = endpoint.options[:route_options]
# Infer serializer name if its not set
route_options[:serializer] = @object.class.name unless route_options.has_key? :serializer
if self.infer_serializers
route_options[:serializer] = @object.class.name unless route_options.has_key? :serializer
end
serializer = route_options[:serializer]

View file

@ -43,6 +43,21 @@ describe Grape::ActiveModelSerializers do
last_response.body.should == '{:user=>{:first_name=>"JR", :last_name=>"HE"}}'
end
context "serializer inference is disabled" do
before do
Grape::Formatter::ActiveModelSerializers.infer_serializers = false
end
it "should NOT infer serializer when there is no serializer set" do
subject.get("/home") do
User.new({first_name: 'JR', last_name: 'HE', email: 'contact@jrhe.co.uk'})
end
get "/home"
last_response.body.should == "{\"user\":{\"created_at\":null,\"first_name\":\"JR\",\"id\":null,\"last_name\":\"HE\",\"updated_at\":null,\"username\":null}}"
end
end
[UserSerializer, 'user', :user].each do |serializer|
it "should render using serializer (#{serializer})" do
subject.get("/home", serializer: serializer) do