mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-23 22:36:50 +00:00
64 lines
1.7 KiB
Ruby
64 lines
1.7 KiB
Ruby
require 'test_helper'
|
|
|
|
module ActiveModel
|
|
class Serializer
|
|
module Adapter
|
|
class JsonApi
|
|
class LinksTest < Minitest::Test
|
|
LinkAuthor = Class.new(::Model)
|
|
class LinkAuthorSerializer < ActiveModel::Serializer
|
|
link :self do
|
|
href "//example.com/link_author/#{object.id}"
|
|
meta stuff: 'value'
|
|
end
|
|
|
|
link :other, '//example.com/resource'
|
|
end
|
|
|
|
def setup
|
|
@post = Post.new(id: 1337, comments: [], author: nil)
|
|
@author = LinkAuthor.new(id: 1337)
|
|
end
|
|
|
|
def test_toplevel_links
|
|
hash = ActiveModel::SerializableResource.new(
|
|
@post,
|
|
adapter: :json_api,
|
|
links: {
|
|
self: {
|
|
href: '//example.com/posts',
|
|
meta: {
|
|
stuff: 'value'
|
|
}
|
|
}
|
|
}).serializable_hash
|
|
expected = {
|
|
self: {
|
|
href: '//example.com/posts',
|
|
meta: {
|
|
stuff: 'value'
|
|
}
|
|
}
|
|
}
|
|
assert_equal(expected, hash[:links])
|
|
end
|
|
|
|
def test_resource_links
|
|
hash = serializable(@author, adapter: :json_api).serializable_hash
|
|
expected = {
|
|
self: {
|
|
href: '//example.com/link_author/1337',
|
|
meta: {
|
|
stuff: 'value'
|
|
}
|
|
},
|
|
other: '//example.com/resource'
|
|
}
|
|
assert_equal(expected, hash[:data][:links])
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|