Merge pull request #1247 from beauby/jsonapi-toplevel-links

Add support for toplevel JSON API links.
This commit is contained in:
João Moura 2015-10-10 17:52:08 -03:00
commit da7e6dc795
3 changed files with 38 additions and 1 deletions

View File

@ -1,7 +1,7 @@
require 'set'
module ActiveModel
class SerializableResource
ADAPTER_OPTION_KEYS = Set.new([:include, :fields, :adapter, :meta, :meta_key])
ADAPTER_OPTION_KEYS = Set.new([:include, :fields, :adapter, :meta, :meta_key, :links])
# Primary interface to composing a resource with a serializer and adapter.
# @return the serializable_resource, ready for #as_json/#to_json/#serializable_hash.

View File

@ -65,6 +65,11 @@ module ActiveModel
ApiObjects::JsonApi.add!(hash)
if instance_options[:links]
hash[:links] ||= {}
hash[:links].update(instance_options[:links])
end
hash
end

View File

@ -0,0 +1,32 @@
require 'test_helper'
module ActiveModel
class Serializer
module Adapter
class JsonApi
class LinksTest < Minitest::Test
def setup
@post = Post.new(id: 1337, comments: [], author: nil)
end
def test_toplevel_links
hash = ActiveModel::SerializableResource.new(
@post,
adapter: :json_api,
links: {
self: {
href: '//posts'
}
}).serializable_hash
expected = {
self: {
href: '//posts'
}
}
assert_equal(expected, hash[:links])
end
end
end
end
end
end