mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-25 07:16:49 +00:00
Don't concat to nil objects
This commit is contained in:
@@ -108,6 +108,42 @@ module ActiveModel
|
||||
ensure
|
||||
UserSerializer._associations[:profile] = @old_association
|
||||
end
|
||||
|
||||
def test_embed_object_in_root_for_has_one_association_with_nil_value
|
||||
@association = UserSerializer._associations[:profile]
|
||||
@old_association = @association.dup
|
||||
|
||||
@association.embed = :ids
|
||||
@association.embed_in_root = true
|
||||
|
||||
@user1 = User.new({ name: 'User 1', email: 'email1@server.com' })
|
||||
@user2 = User.new({ name: 'User 2', email: 'email2@server.com' })
|
||||
|
||||
class << @user1
|
||||
def profile
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
class << @user2
|
||||
def profile
|
||||
@profile ||= Profile.new(name: 'Name 1', description: 'Desc 1')
|
||||
end
|
||||
end
|
||||
|
||||
@serializer = ArraySerializer.new([@user1, @user2], root: :users)
|
||||
assert_equal({
|
||||
users: [
|
||||
{ name: "User 1", email: "email1@server.com", 'profile_id' => nil },
|
||||
{ name: "User 2", email: "email2@server.com", 'profile_id' => @user2.profile.object_id }
|
||||
],
|
||||
'profiles' => [
|
||||
{ name: 'Name 1', description: 'Desc 1' }
|
||||
]
|
||||
}, @serializer.as_json)
|
||||
ensure
|
||||
UserSerializer._associations[:profile] = @old_association
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user