aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test/cases
diff options
context:
space:
mode:
authorJose and Yehuda <wycats@gmail.com>2011-10-15 19:22:16 +0200
committerJose and Yehuda <wycats@gmail.com>2011-10-15 19:22:16 +0200
commit2abb2e617af8e3353d4411a8bd51d03256e0274a (patch)
treefcfbe4d7c40d476ffebb456e39aab89a7c21aa64 /activemodel/test/cases
parenta230f040ff61f069d46a9b86417a8e251016d5db (diff)
downloadrails-2abb2e617af8e3353d4411a8bd51d03256e0274a.tar.gz
rails-2abb2e617af8e3353d4411a8bd51d03256e0274a.tar.bz2
rails-2abb2e617af8e3353d4411a8bd51d03256e0274a.zip
Add initial support for embed API
Diffstat (limited to 'activemodel/test/cases')
-rw-r--r--activemodel/test/cases/serializer_test.rb86
1 files changed, 82 insertions, 4 deletions
diff --git a/activemodel/test/cases/serializer_test.rb b/activemodel/test/cases/serializer_test.rb
index 044c184829..e6a0d0cdcf 100644
--- a/activemodel/test/cases/serializer_test.rb
+++ b/activemodel/test/cases/serializer_test.rb
@@ -226,10 +226,12 @@ class SerializerTest < ActiveModel::TestCase
attributes :title, :body
has_many :comments, :serializer => CommentSerializer
- define_method :serializable_hash do
- post_hash = attributes
- post_hash.merge!(send(type))
- post_hash
+ if type != :super
+ define_method :serializable_hash do
+ post_hash = attributes
+ post_hash.merge!(send(type))
+ post_hash
+ end
end
end
end
@@ -325,4 +327,80 @@ class SerializerTest < ActiveModel::TestCase
serializer = Class.new(serializer)
assert_equal({ :author => nil }, serializer.new(blog, user).as_json)
end
+
+ def test_embed_ids
+ serializer = post_serializer(:super)
+
+ serializer.class_eval do
+ root :post
+ embed :ids
+ end
+
+ post = Post.new(:title => "New Post", :body => "Body of new post", :email => "tenderlove@tenderlove.com")
+ comments = [Comment.new(:title => "Comment1", :id => 1), Comment.new(:title => "Comment2", :id => 2)]
+ post.comments = comments
+
+ serializer = serializer.new(post, nil)
+
+ assert_equal({
+ :post => {
+ :title => "New Post",
+ :body => "Body of new post",
+ :comments => [1, 2]
+ }
+ }, serializer.as_json)
+ end
+
+ def test_embed_ids_include_true
+ serializer = post_serializer(:super)
+
+ serializer.class_eval do
+ root :post
+ embed :ids, :include => true
+ end
+
+ post = Post.new(:title => "New Post", :body => "Body of new post", :email => "tenderlove@tenderlove.com")
+ comments = [Comment.new(:title => "Comment1", :id => 1), Comment.new(:title => "Comment2", :id => 2)]
+ post.comments = comments
+
+ serializer = serializer.new(post, nil)
+
+ assert_equal({
+ :post => {
+ :title => "New Post",
+ :body => "Body of new post",
+ :comments => [1, 2]
+ },
+ :comments => [
+ { :title => "Comment1" },
+ { :title => "Comment2" }
+ ]
+ }, serializer.as_json)
+ end
+
+ def test_embed_objects
+ serializer = post_serializer(:super)
+
+ serializer.class_eval do
+ root :post
+ embed :objects
+ end
+
+ post = Post.new(:title => "New Post", :body => "Body of new post", :email => "tenderlove@tenderlove.com")
+ comments = [Comment.new(:title => "Comment1", :id => 1), Comment.new(:title => "Comment2", :id => 2)]
+ post.comments = comments
+
+ serializer = serializer.new(post, nil)
+
+ assert_equal({
+ :post => {
+ :title => "New Post",
+ :body => "Body of new post",
+ :comments => [
+ { :title => "Comment1" },
+ { :title => "Comment2" }
+ ]
+ }
+ }, serializer.as_json)
+ end
end