aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test/cases/serialization_test.rb
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2012-05-11 17:17:29 +0100
committerJon Leighton <j@jonathanleighton.com>2012-05-11 20:11:04 +0100
commita8637cf4938d2decd17e702c399ca9c0cf1a6052 (patch)
tree5528c54f422590112a7982a6c1a0188cd66db50b /activemodel/test/cases/serialization_test.rb
parentb892b4c08fe2cba133882252c64d123e319eb174 (diff)
downloadrails-a8637cf4938d2decd17e702c399ca9c0cf1a6052.tar.gz
rails-a8637cf4938d2decd17e702c399ca9c0cf1a6052.tar.bz2
rails-a8637cf4938d2decd17e702c399ca9c0cf1a6052.zip
Use respond_to?(:to_ary) rather than is_a?(Enumerable) to detect collection-thing.
Diffstat (limited to 'activemodel/test/cases/serialization_test.rb')
-rw-r--r--activemodel/test/cases/serialization_test.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/activemodel/test/cases/serialization_test.rb b/activemodel/test/cases/serialization_test.rb
index 66b18d65e5..d2ba9fd95d 100644
--- a/activemodel/test/cases/serialization_test.rb
+++ b/activemodel/test/cases/serialization_test.rb
@@ -105,6 +105,24 @@ class SerializationTest < ActiveModel::TestCase
assert_equal expected, @user.serializable_hash(:include => :friends)
end
+ class FriendList
+ def initialize(friends)
+ @friends = friends
+ end
+
+ def to_ary
+ @friends
+ end
+ end
+
+ def test_include_option_with_ary
+ @user.friends = FriendList.new(@user.friends)
+ expected = {"email"=>"david@example.com", "gender"=>"male", "name"=>"David",
+ "friends"=>[{"name"=>'Joe', "email"=>'joe@example.com', "gender"=>'male'},
+ {"name"=>'Sue', "email"=>'sue@example.com', "gender"=>'female'}]}
+ assert_equal expected, @user.serializable_hash(:include => :friends)
+ end
+
def test_multiple_includes
expected = {"email"=>"david@example.com", "gender"=>"male", "name"=>"David",
"address"=>{"street"=>"123 Lane", "city"=>"Springfield", "state"=>"CA", "zip"=>11111},