From f4cdb6b40b19821ea5b3452213fd654751c0b0ad Mon Sep 17 00:00:00 2001 From: Jonathan del Strother Date: Thu, 12 Mar 2009 17:53:16 +0000 Subject: [PATCH] Use xmlschema when serializing TimeWithZones to xml When using Hash#to_xml, any TimeWithZone objects now use xmlschema (iso8601), rather than a simple TimeWithZone#to_s. --- .../active_support/core_ext/hash/conversions.rb | 5 +++-- activesupport/test/core_ext/hash_ext_test.rb | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/activesupport/lib/active_support/core_ext/hash/conversions.rb b/activesupport/lib/active_support/core_ext/hash/conversions.rb index 991a5a6..1043597 100644 --- a/activesupport/lib/active_support/core_ext/hash/conversions.rb +++ b/activesupport/lib/active_support/core_ext/hash/conversions.rb @@ -24,11 +24,12 @@ module ActiveSupport #:nodoc: "Bignum" => "integer", "BigDecimal" => "decimal", "Float" => "float", + "TrueClass" => "boolean", + "FalseClass" => "boolean", "Date" => "date", "DateTime" => "datetime", "Time" => "datetime", - "TrueClass" => "boolean", - "FalseClass" => "boolean" + "ActiveSupport::TimeWithZone" => "datetime" } unless defined?(XML_TYPE_NAMES) XML_FORMATTING = { diff --git a/activesupport/test/core_ext/hash_ext_test.rb b/activesupport/test/core_ext/hash_ext_test.rb index 482ae57..0edac72 100644 --- a/activesupport/test/core_ext/hash_ext_test.rb +++ b/activesupport/test/core_ext/hash_ext_test.rb @@ -497,6 +497,15 @@ class HashToXmlTest < Test::Unit::TestCase assert xml.include?(%(
)) end + def test_timezoned_attributes + xml = { + :created_at => Time.utc(1999,2,2), + :local_created_at => Time.utc(1999,2,2).in_time_zone('Eastern Time (US & Canada)') + }.to_xml(@xml_options) + assert_match %r{1999-02-02T00:00:00Z}, xml + assert_match %r{1999-02-01T19:00:00-05:00}, xml + end + def test_single_record_from_xml topic_xml = <<-EOT -- 1.6.2.77.g8cc3f