mirror of
https://github.com/samsonjs/grape-active_model_serializers.git
synced 2026-04-27 14:57:43 +00:00
Added the ability to turn off serializer inference
This commit is contained in:
parent
d3db8672ab
commit
65f6980dad
2 changed files with 22 additions and 7 deletions
|
|
@ -4,10 +4,12 @@ module Grape
|
||||||
module Formatter
|
module Formatter
|
||||||
module ActiveModelSerializers
|
module ActiveModelSerializers
|
||||||
class << self
|
class << self
|
||||||
|
attr_accessor :infer_serializers
|
||||||
attr_reader :env
|
attr_reader :env
|
||||||
attr_reader :endpoint
|
attr_reader :endpoint
|
||||||
|
|
||||||
|
ActiveModelSerializers.infer_serializers = true
|
||||||
|
|
||||||
def call(object, env)
|
def call(object, env)
|
||||||
@object = object
|
@object = object
|
||||||
@env = env
|
@env = env
|
||||||
|
|
@ -22,19 +24,17 @@ module Grape
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def active_model_serializer
|
|
||||||
_active_model_serializer
|
|
||||||
end
|
|
||||||
|
|
||||||
def active_model_serializer?
|
def active_model_serializer?
|
||||||
!!active_model_serializer
|
!!active_model_serializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def _active_model_serializer
|
def active_model_serializer
|
||||||
route_options = endpoint.options[:route_options]
|
route_options = endpoint.options[:route_options]
|
||||||
|
|
||||||
# Infer serializer name if its not set
|
# 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]
|
serializer = route_options[:serializer]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,21 @@ describe Grape::ActiveModelSerializers do
|
||||||
last_response.body.should == '{:user=>{:first_name=>"JR", :last_name=>"HE"}}'
|
last_response.body.should == '{:user=>{:first_name=>"JR", :last_name=>"HE"}}'
|
||||||
end
|
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|
|
[UserSerializer, 'user', :user].each do |serializer|
|
||||||
it "should render using serializer (#{serializer})" do
|
it "should render using serializer (#{serializer})" do
|
||||||
subject.get("/home", serializer: serializer) do
|
subject.get("/home", serializer: serializer) do
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue