Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Made arrays of ActiveRecords, and any classes, with namespaces conver…

…t to valid xml. [#3824 state:resolved]

Signed-off-by: José Valim <jose.valim@gmail.com>
  • Loading branch information...
commit 5850edf104ab1da0f72a43e6717a1270134db293 1 parent dc97430
Mark W. Foster fosrias authored josevalim committed
12 activerecord/test/cases/xml_serialization_test.rb
View
@@ -130,10 +130,20 @@ def test_should_serialize_yaml
end
class DatabaseConnectedXmlSerializationTest < ActiveRecord::TestCase
- fixtures :authors, :posts
+ fixtures :authors, :posts, :projects
+
# to_xml used to mess with the hash the user provided which
# caused the builder to be reused. This meant the document kept
# getting appended to.
+
+ def test_modules
+ projects = MyApplication::Business::Project.all
+ xml = projects.to_xml
+ root = projects.first.class.to_s.underscore.pluralize.tr('/','_').dasherize
+ assert_match "<#{root} type=\"array\">", xml
+ assert_match "</#{root}>", xml
+ end
+
def test_passing_hash_shouldnt_reuse_builder
options = {:include=>:posts}
david = authors(:david)
2  activesupport/lib/active_support/core_ext/array/conversions.rb
View
@@ -131,7 +131,7 @@ def to_xml(options = {})
require 'builder' unless defined?(Builder)
options = options.dup
- options[:root] ||= all? { |e| e.is_a?(first.class) && first.class.to_s != "Hash" } ? ActiveSupport::Inflector.pluralize(ActiveSupport::Inflector.underscore(first.class.name)) : "records"
+ options[:root] ||= all? { |e| e.is_a?(first.class) && first.class.to_s != "Hash" } ? ActiveSupport::Inflector.pluralize(ActiveSupport::Inflector.underscore(first.class.name)).tr('/', '_') : "records"
options[:children] ||= options[:root].singularize
options[:indent] ||= 2
options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent])
Please sign in to comment.
Something went wrong with that request. Please try again.