Fix serialization for nested nil includes with block
This commit is contained in:
parent
f54e6242ff
commit
44d5e0f9c5
@ -182,7 +182,7 @@ module FastJsonapi
|
|||||||
object = relationship[:object_block].call(record, params)
|
object = relationship[:object_block].call(record, params)
|
||||||
|
|
||||||
return object.map(&:id) if object.respond_to? :map
|
return object.map(&:id) if object.respond_to? :map
|
||||||
return object.id
|
return object.try(:id)
|
||||||
end
|
end
|
||||||
|
|
||||||
record.public_send(relationship[:id_method_name])
|
record.public_send(relationship[:id_method_name])
|
||||||
|
@ -97,6 +97,13 @@ describe FastJsonapi::ObjectSerializer do
|
|||||||
expect(serializable_hash['data']['relationships']['owner']['data']).to be nil
|
expect(serializable_hash['data']['relationships']['owner']['data']).to be nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'returns correct json when belongs_to returns nil and there is a block for the relationship' do
|
||||||
|
movie.owner_id = nil
|
||||||
|
json = MovieSerializer.new(movie, {include: [:owner]}).serialized_json
|
||||||
|
serializable_hash = JSON.parse(json)
|
||||||
|
expect(serializable_hash['data']['relationships']['owner']['data']).to be nil
|
||||||
|
end
|
||||||
|
|
||||||
it 'returns correct json when has_one returns nil' do
|
it 'returns correct json when has_one returns nil' do
|
||||||
supplier.account_id = nil
|
supplier.account_id = nil
|
||||||
json = SupplierSerializer.new(supplier).serialized_json
|
json = SupplierSerializer.new(supplier).serialized_json
|
||||||
|
@ -43,6 +43,13 @@ RSpec.shared_context 'movie class' do
|
|||||||
ac
|
ac
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def owner
|
||||||
|
return unless owner_id
|
||||||
|
ow = Owner.new
|
||||||
|
ow.id = owner_id
|
||||||
|
ow
|
||||||
|
end
|
||||||
|
|
||||||
def cache_key
|
def cache_key
|
||||||
"#{id}"
|
"#{id}"
|
||||||
end
|
end
|
||||||
@ -146,6 +153,14 @@ RSpec.shared_context 'movie class' do
|
|||||||
attr_accessor :id
|
attr_accessor :id
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class Owner
|
||||||
|
attr_accessor :id
|
||||||
|
end
|
||||||
|
|
||||||
|
class OwnerSerializer
|
||||||
|
include FastJsonapi::ObjectSerializer
|
||||||
|
end
|
||||||
|
|
||||||
# serializers
|
# serializers
|
||||||
class MovieSerializer
|
class MovieSerializer
|
||||||
include FastJsonapi::ObjectSerializer
|
include FastJsonapi::ObjectSerializer
|
||||||
@ -153,7 +168,9 @@ RSpec.shared_context 'movie class' do
|
|||||||
# director attr is not mentioned intentionally
|
# director attr is not mentioned intentionally
|
||||||
attributes :name, :release_year
|
attributes :name, :release_year
|
||||||
has_many :actors
|
has_many :actors
|
||||||
belongs_to :owner, record_type: :user
|
belongs_to :owner, record_type: :user do |object, params|
|
||||||
|
object.owner
|
||||||
|
end
|
||||||
belongs_to :movie_type
|
belongs_to :movie_type
|
||||||
has_one :advertising_campaign
|
has_one :advertising_campaign
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user