From 23c4c02f89695b7ae0b2c0f3caf2031036532a64 Mon Sep 17 00:00:00 2001 From: Neeraj Singh Date: Thu, 29 Apr 2010 17:39:05 -0400 Subject: [PATCH] test cases for record.to_xml [#458 state:resolved] --- .../serializeration/xml_serialization_test.rb | 8 ++++++++ activemodel/test/models/contact.rb | 8 ++++++++ activerecord/test/cases/xml_serialization_test.rb | 8 ++++++++ activerecord/test/models/author.rb | 4 ++++ 4 files changed, 28 insertions(+), 0 deletions(-) diff --git a/activemodel/test/cases/serializeration/xml_serialization_test.rb b/activemodel/test/cases/serializeration/xml_serialization_test.rb index ac8665d..3ba826a 100644 --- a/activemodel/test/cases/serializeration/xml_serialization_test.rb +++ b/activemodel/test/cases/serializeration/xml_serialization_test.rb @@ -95,6 +95,14 @@ class XmlSerializationTest < ActiveModel::TestCase assert_match %r{false}, @contact.to_xml end + test "should serialize array" do + assert_match %r{\s*twitter\s*github\s*}, @contact.to_xml(:methods => :social) + end + + test "should serialize hash" do + assert_match %r{\s*github\s*}, @contact.to_xml(:methods => :network) + end + test "should serialize yaml" do assert_match %r{--- !ruby/object:OpenStruct \ntable:\s*:name: John\n}, @contact.to_xml end diff --git a/activemodel/test/models/contact.rb b/activemodel/test/models/contact.rb index a9009fb..605e435 100644 --- a/activemodel/test/models/contact.rb +++ b/activemodel/test/models/contact.rb @@ -3,6 +3,14 @@ class Contact attr_accessor :id, :name, :age, :created_at, :awesome, :preferences + def social + %w(twitter github) + end + + def network + {:git => :github} + end + def initialize(options = {}) options.each { |name, value| send("#{name}=", value) } end diff --git a/activerecord/test/cases/xml_serialization_test.rb b/activerecord/test/cases/xml_serialization_test.rb index bd29ae2..751946f 100644 --- a/activerecord/test/cases/xml_serialization_test.rb +++ b/activerecord/test/cases/xml_serialization_test.rb @@ -234,4 +234,12 @@ class DatabaseConnectedXmlSerializationTest < ActiveRecord::TestCase assert types.include?('StiPost') end + def test_should_produce_xml_for_methods_returning_array + xml = authors(:david).to_xml(:methods => :social) + array = Hash.from_xml(xml)['author']['social'] + assert_equal 2, array.size + assert array.include? 'twitter' + assert array.include? 'github' + end + end diff --git a/activerecord/test/models/author.rb b/activerecord/test/models/author.rb index 025f620..655b45b 100644 --- a/activerecord/test/models/author.rb +++ b/activerecord/test/models/author.rb @@ -104,6 +104,10 @@ class Author < ActiveRecord::Base "#{id}-#{name}" end + def social + %w(twitter github) + end + private def log_before_adding(object) @post_log << "before_adding#{object.id || ''}" -- 1.6.5.2