diff options
Diffstat (limited to 'activerecord/test/serialization_test.rb')
-rw-r--r-- | activerecord/test/serialization_test.rb | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/activerecord/test/serialization_test.rb b/activerecord/test/serialization_test.rb new file mode 100644 index 0000000000..b3bdf6b43d --- /dev/null +++ b/activerecord/test/serialization_test.rb @@ -0,0 +1,47 @@ +require 'abstract_unit' +require 'fixtures/contact' + +class SerializationTest < Test::Unit::TestCase + FORMATS = [ :xml, :json ] + + def setup + @contact_attributes = { + :name => 'aaron stack', + :age => 25, + :avatar => 'binarydata', + :created_at => Time.utc(2006, 8, 1), + :awesome => false, + :preferences => { :gem => 'ruby' } + } + + @contact = Contact.new(@contact_attributes) + end + + def test_serialize_should_be_reversible + for format in FORMATS + @serialized = Contact.new.send("to_#{format}") + contact = Contact.new.send("from_#{format}", @serialized) + + assert_equal @contact_attributes.keys.collect(&:to_s).sort, contact.attributes.keys.collect(&:to_s).sort, "For #{format}" + end + end + + def test_serialize_should_allow_attribute_only_filtering + for format in FORMATS + @serialized = Contact.new(@contact_attributes).send("to_#{format}", :only => [ :age, :name ]) + contact = Contact.new.send("from_#{format}", @serialized) + assert_equal @contact_attributes[:name], contact.name, "For #{format}" + assert_nil contact.avatar, "For #{format}" + end + end + + def test_serialize_should_allow_attribute_except_filtering + for format in FORMATS + @serialized = Contact.new(@contact_attributes).send("to_#{format}", :except => [ :age, :name ]) + contact = Contact.new.send("from_#{format}", @serialized) + assert_nil contact.name, "For #{format}" + assert_nil contact.age, "For #{format}" + assert_equal @contact_attributes[:awesome], contact.awesome, "For #{format}" + end + end +end
\ No newline at end of file |