mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Base#to_xml supports the nil="true" attribute like Hash#to_xml. Closes #8268.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8138 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
a75cafbda2
commit
ea256eaa7f
4 changed files with 29 additions and 9 deletions
|
@ -1,5 +1,7 @@
|
|||
*SVN*
|
||||
|
||||
* Base#to_xml supports the nil="true" attribute like Hash#to_xml. #8268 [Catfish]
|
||||
|
||||
* Change plings to the more conventional quotes in the documentation. Closes #10104 [danger]
|
||||
|
||||
* Fix HasManyThrough Association so it uses :conditions on the HasMany Association. Closes #9729 [danger]
|
||||
|
|
|
@ -271,6 +271,10 @@ module ActiveRecord #:nodoc:
|
|||
decorations[:type] = type
|
||||
end
|
||||
|
||||
if value.nil?
|
||||
decorations[:nil] = true
|
||||
end
|
||||
|
||||
decorations
|
||||
end
|
||||
|
||||
|
|
|
@ -1555,7 +1555,7 @@ class BasicsTest < Test::Unit::TestCase
|
|||
assert xml.include?(%(<written-on type="datetime">#{written_on_in_current_timezone}</written-on>))
|
||||
assert xml.include?(%(<content type="yaml">--- Have a nice day\n</content>))
|
||||
assert xml.include?(%(<author-email-address>david@loudthinking.com</author-email-address>))
|
||||
assert xml.match(%(<parent-id type="integer"></parent-id>))
|
||||
assert xml.include?(%(<parent-id nil="true" type="integer"></parent-id>))
|
||||
if current_adapter?(:SybaseAdapter, :SQLServerAdapter, :OracleAdapter)
|
||||
assert xml.include?(%(<last-read type="datetime">#{last_read_in_current_timezone}</last-read>))
|
||||
else
|
||||
|
|
|
@ -78,29 +78,43 @@ class NilXmlSerializationTest < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_should_serialize_string
|
||||
assert_match %r{<name></name>}, @xml
|
||||
assert_match %r{<name nil="true"></name>}, @xml
|
||||
end
|
||||
|
||||
def test_should_serialize_integer
|
||||
assert_match %r{<age type="integer"></age>}, @xml
|
||||
assert %r{<age (.*)></age>}.match(@xml)
|
||||
attributes = $1
|
||||
assert_match %r{nil="true"}, attributes
|
||||
assert_match %r{type="integer"}, attributes
|
||||
end
|
||||
|
||||
def test_should_serialize_binary
|
||||
assert_match %r{></avatar>}, @xml
|
||||
assert_match %r{<avatar(.*)(type="binary")}, @xml
|
||||
assert_match %r{<avatar(.*)(encoding="base64")}, @xml
|
||||
assert %r{<avatar (.*)></avatar>}.match(@xml)
|
||||
attributes = $1
|
||||
assert_match %r{type="binary"}, attributes
|
||||
assert_match %r{encoding="base64"}, attributes
|
||||
assert_match %r{nil="true"}, attributes
|
||||
end
|
||||
|
||||
def test_should_serialize_datetime
|
||||
assert_match %r{<created-at type=\"datetime\"></created-at>}, @xml
|
||||
assert %r{<created-at (.*)></created-at>}.match(@xml)
|
||||
attributes = $1
|
||||
assert_match %r{nil="true"}, attributes
|
||||
assert_match %r{type="datetime"}, attributes
|
||||
end
|
||||
|
||||
def test_should_serialize_boolean
|
||||
assert_match %r{<awesome type=\"boolean\"></awesome>}, @xml
|
||||
assert %r{<awesome (.*)></awesome>}.match(@xml)
|
||||
attributes = $1
|
||||
assert_match %r{type="boolean"}, attributes
|
||||
assert_match %r{nil="true"}, attributes
|
||||
end
|
||||
|
||||
def test_should_serialize_yaml
|
||||
assert_match %r{<preferences type=\"yaml\"></preferences>}, @xml
|
||||
assert %r{<preferences(.*)></preferences>}.match(@xml)
|
||||
attributes = $1
|
||||
assert_match %r{type="yaml"}, attributes
|
||||
assert_match %r{nil="true"}, attributes
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue