aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test
diff options
context:
space:
mode:
authorRick Olson <technoweenie@gmail.com>2007-06-21 15:07:15 +0000
committerRick Olson <technoweenie@gmail.com>2007-06-21 15:07:15 +0000
commit9e4461438f8ce584b635aca35579c36537a340ca (patch)
tree8c1b83901b2d7ee52d32eec792e6af1ca807e65f /activesupport/test
parenteb2e30ef249051713d8122a784d8fbfa378e7ae1 (diff)
downloadrails-9e4461438f8ce584b635aca35579c36537a340ca.tar.gz
rails-9e4461438f8ce584b635aca35579c36537a340ca.tar.bz2
rails-9e4461438f8ce584b635aca35579c36537a340ca.zip
Added proper handling of arrays. Closes #8537 [hasmanyjosh]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7074 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport/test')
-rw-r--r--activesupport/test/core_ext/array_ext_test.rb4
-rw-r--r--activesupport/test/core_ext/hash_ext_test.rb43
2 files changed, 41 insertions, 6 deletions
diff --git a/activesupport/test/core_ext/array_ext_test.rb b/activesupport/test/core_ext/array_ext_test.rb
index e5ca4c424f..8c5356ac78 100644
--- a/activesupport/test/core_ext/array_ext_test.rb
+++ b/activesupport/test/core_ext/array_ext_test.rb
@@ -121,7 +121,7 @@ class ArrayToXmlTests < Test::Unit::TestCase
{ :name => "Jason", :age => 31, :age_in_millis => BigDecimal.new('1.0') }
].to_xml(:skip_instruct => true, :indent => 0)
- assert_equal "<records><record>", xml.first(17), xml
+ assert_equal '<records type="array"><record>', xml.first(30)
assert xml.include?(%(<age type="integer">26</age>)), xml
assert xml.include?(%(<age-in-millis type="integer">820497600000</age-in-millis>)), xml
assert xml.include?(%(<name>David</name>)), xml
@@ -135,7 +135,7 @@ class ArrayToXmlTests < Test::Unit::TestCase
{ :name => "David", :age => 26, :age_in_millis => 820497600000 }, { :name => "Jason", :age => 31 }
].to_xml(:skip_instruct => true, :indent => 0, :root => "people")
- assert_equal "<people><person>", xml.first(16)
+ assert_equal '<people type="array"><person>', xml.first(29)
end
def test_to_xml_with_options
diff --git a/activesupport/test/core_ext/hash_ext_test.rb b/activesupport/test/core_ext/hash_ext_test.rb
index a428fe5061..cae19a9335 100644
--- a/activesupport/test/core_ext/hash_ext_test.rb
+++ b/activesupport/test/core_ext/hash_ext_test.rb
@@ -370,7 +370,7 @@ class HashToXmlTest < Test::Unit::TestCase
def test_two_levels_with_array
xml = { :name => "David", :addresses => [{ :street => "Paulina" }, { :street => "Evergreen" }] }.to_xml(@xml_options)
assert_equal "<person>", xml.first(8)
- assert xml.include?(%(<addresses><address>))
+ assert xml.include?(%(<addresses type="array"><address>))
assert xml.include?(%(<address><street>Paulina</street></address>))
assert xml.include?(%(<address><street>Evergreen</street></address>))
assert xml.include?(%(<name>David</name>))
@@ -378,7 +378,7 @@ class HashToXmlTest < Test::Unit::TestCase
def test_three_levels_with_array
xml = { :name => "David", :addresses => [{ :streets => [ { :name => "Paulina" }, { :name => "Paulina" } ] } ] }.to_xml(@xml_options)
- assert xml.include?(%(<addresses><address><streets><street><name>))
+ assert xml.include?(%(<addresses type="array"><address><streets type="array"><street><name>))
end
def test_single_record_from_xml
@@ -447,7 +447,7 @@ class HashToXmlTest < Test::Unit::TestCase
def test_multiple_records_from_xml
topics_xml = <<-EOT
- <topics>
+ <topics type="array">
<topic>
<title>The First Topic</title>
<author-name>David</author-name>
@@ -491,7 +491,7 @@ class HashToXmlTest < Test::Unit::TestCase
:parent_id => nil
}.stringify_keys
- assert_equal expected_topic_hash, Hash.from_xml(topics_xml)["topics"]["topic"].first
+ assert_equal expected_topic_hash, Hash.from_xml(topics_xml)["topics"].first
end
def test_single_record_from_xml_with_attributes_other_than_type
@@ -516,6 +516,41 @@ class HashToXmlTest < Test::Unit::TestCase
assert_equal expected_topic_hash, Hash.from_xml(topic_xml)["rsp"]["photos"]["photo"]
end
+
+ def test_empty_array_from_xml
+ blog_xml = <<-XML
+ <blog>
+ <posts type="array"></posts>
+ </blog>
+ XML
+ expected_blog_hash = {"blog" => {"posts" => []}}
+ assert_equal expected_blog_hash, Hash.from_xml(blog_xml)
+ end
+
+ def test_array_with_one_entry_from_xml
+ blog_xml = <<-XML
+ <blog>
+ <posts type="array">
+ <post>a post</post>
+ </posts>
+ </blog>
+ XML
+ expected_blog_hash = {"blog" => {"posts" => ["a post"]}}
+ assert_equal expected_blog_hash, Hash.from_xml(blog_xml)
+ end
+
+ def test_array_with_multiple_entries_from_xml
+ blog_xml = <<-XML
+ <blog>
+ <posts type="array">
+ <post>a post</post>
+ <post>another post</post>
+ </posts>
+ </blog>
+ XML
+ expected_blog_hash = {"blog" => {"posts" => ["a post", "another post"]}}
+ assert_equal expected_blog_hash, Hash.from_xml(blog_xml)
+ end
def test_xsd_like_types_from_xml
bacon_xml = <<-EOT