JsonApi adapter: serialize association

This commit is contained in:
Tema Bolshakov
2014-08-29 11:37:27 +04:00
parent 6496b08464
commit 6bb4501f67
4 changed files with 88 additions and 37 deletions

View File

@@ -0,0 +1,29 @@
require 'test_helper'
module ActiveModel
class Serializer
class Adapter
class JsonApiAdapter
class BelongsToTest < Minitest::Test
def setup
@post = Post.new(id: 42, title: 'New Post', body: 'Body')
@comment = Comment.new(id: 1, body: 'ZOMG A COMMENT')
@post.comments = [@comment]
@comment.post = @post
@serializer = CommentSerializer.new(@comment)
@adapter = ActiveModel::Serializer::Adapter::JsonApiAdapter.new(@serializer)
end
def test_includes_post_id
assert_equal(42, @adapter.serializable_hash[:links][:post])
end
def test_includes_linked_post
assert_equal([{id: 42, title: 'New Post', body: 'Body'}], @adapter.serializable_hash[:linked][:posts])
end
end
end
end
end
end

View File

@@ -0,0 +1,34 @@
require 'test_helper'
module ActiveModel
class Serializer
class Adapter
class JsonApiAdapter
class HasManyTest < Minitest::Test
def setup
@post = Post.new(title: 'New Post', body: 'Body')
@first_comment = Comment.new(id: 1, body: 'ZOMG A COMMENT')
@second_comment = Comment.new(id: 2, body: 'ZOMG ANOTHER COMMENT')
@post.comments = [@first_comment, @second_comment]
@first_comment.post = @post
@second_comment.post = @post
@serializer = PostSerializer.new(@post)
@adapter = ActiveModel::Serializer::Adapter::JsonApiAdapter.new(@serializer)
end
def test_includes_comment_ids
assert_equal([1, 2], @adapter.serializable_hash[:links][:comments])
end
def test_includes_linked_comments
assert_equal([
{id: 1, body: 'ZOMG A COMMENT'},
{id: 2, body: 'ZOMG ANOTHER COMMENT'}
], @adapter.serializable_hash[:linked][:comments])
end
end
end
end
end
end

View File

@@ -1,26 +0,0 @@
require 'test_helper'
module ActiveModel
class Serializer
class Adapter
class JsonApiTest < Minitest::Test
def setup
@post = Post.new(title: 'New Post', body: 'Body')
@first_comment = Comment.new(id: 1, body: 'ZOMG A COMMENT')
@second_comment = Comment.new(id: 2, body: 'ZOMG ANOTHER COMMENT')
@post.comments = [@first_comment, @second_comment]
@first_comment.post = @post
@second_comment.post = @post
@post_serializer = PostSerializer.new(@post)
@adapter = ActiveModel::Serializer::Adapter::JsonApiAdapter.new(@post_serializer)
end
def test_includes_comment_ids
assert_equal([1, 2], @adapter.serializable_hash[:comments])
end
end
end
end
end