diff options
author | Joshua Peek <josh@joshpeek.com> | 2009-06-28 22:12:10 -0500 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2009-07-03 21:38:14 -0500 |
commit | d2b78b3594b9cc9870e6a6ebfeb2e56d00e6ddb8 (patch) | |
tree | 4465b03c54482abc2ffad18b93694b9de08cdb8b /activemodel/test/cases | |
parent | e3d6d10e1ff669430c3d8678c196c52397c850ea (diff) | |
download | rails-d2b78b3594b9cc9870e6a6ebfeb2e56d00e6ddb8.tar.gz rails-d2b78b3594b9cc9870e6a6ebfeb2e56d00e6ddb8.tar.bz2 rails-d2b78b3594b9cc9870e6a6ebfeb2e56d00e6ddb8.zip |
Initial extraction of AMo xml serializer
Diffstat (limited to 'activemodel/test/cases')
-rw-r--r-- | activemodel/test/cases/serializeration/json_serialization_test.rb (renamed from activemodel/test/cases/json_serialization_test.rb) | 24 | ||||
-rw-r--r-- | activemodel/test/cases/serializeration/xml_serialization_test.rb | 81 |
2 files changed, 100 insertions, 5 deletions
diff --git a/activemodel/test/cases/json_serialization_test.rb b/activemodel/test/cases/serializeration/json_serialization_test.rb index e50922493d..3e69db110e 100644 --- a/activemodel/test/cases/json_serialization_test.rb +++ b/activemodel/test/cases/serializeration/json_serialization_test.rb @@ -1,11 +1,11 @@ require 'cases/helper' +require 'models/contact' -class JsonSerializationTest < ActiveModel::TestCase - class Contact - include ActiveModel::Serializers::JSON - attr_accessor :name, :age, :created_at, :awesome, :preferences - end +class Contact + include ActiveModel::Serializers::JSON +end +class JsonSerializationTest < ActiveModel::TestCase def setup @contact = Contact.new @contact.name = 'Konata Izumi' @@ -60,4 +60,18 @@ class JsonSerializationTest < ActiveModel::TestCase assert json.include?(%("created_at":#{ActiveSupport::JSON.encode(Time.utc(2006, 8, 1))})) assert_match %r{"preferences":\{"shows":"anime"\}}, json end + + test "methds are called on object" do + # Define methods on fixture. + def @contact.label; "Has cheezburger"; end + def @contact.favorite_quote; "Constraints are liberating"; end + + # Single method. + assert_match %r{"label":"Has cheezburger"}, @contact.to_json(:only => :name, :methods => :label) + + # Both methods. + methods_json = @contact.to_json(:only => :name, :methods => [:label, :favorite_quote]) + assert_match %r{"label":"Has cheezburger"}, methods_json + assert_match %r{"favorite_quote":"Constraints are liberating"}, methods_json + end end diff --git a/activemodel/test/cases/serializeration/xml_serialization_test.rb b/activemodel/test/cases/serializeration/xml_serialization_test.rb new file mode 100644 index 0000000000..57792e900e --- /dev/null +++ b/activemodel/test/cases/serializeration/xml_serialization_test.rb @@ -0,0 +1,81 @@ +require 'cases/helper' +require 'models/contact' + +class Contact + include ActiveModel::Serializers::Xml +end + +class XmlSerializationTest < ActiveModel::TestCase + def setup + @contact = Contact.new + @contact.name = 'aaron stack' + @contact.age = 25 + @contact.created_at = Time.utc(2006, 8, 1) + @contact.awesome = false + @contact.preferences = { :gem => 'ruby' } + end + + test "should serialize default root" do + @xml = @contact.to_xml + assert_match %r{^<contact>}, @xml + assert_match %r{</contact>$}, @xml + end + + test "should serialize default root with namespace" do + @xml = @contact.to_xml :namespace => "http://xml.rubyonrails.org/contact" + assert_match %r{^<contact xmlns="http://xml.rubyonrails.org/contact">}, @xml + assert_match %r{</contact>$}, @xml + end + + test "should serialize custom root" do + @xml = @contact.to_xml :root => 'xml_contact' + assert_match %r{^<xml-contact>}, @xml + assert_match %r{</xml-contact>$}, @xml + end + + test "should allow undasherized tags" do + @xml = @contact.to_xml :root => 'xml_contact', :dasherize => false + assert_match %r{^<xml_contact>}, @xml + assert_match %r{</xml_contact>$}, @xml + assert_match %r{<created_at}, @xml + end + + test "should allow camelized tags" do + @xml = @contact.to_xml :root => 'xml_contact', :camelize => true + assert_match %r{^<XmlContact>}, @xml + assert_match %r{</XmlContact>$}, @xml + assert_match %r{<CreatedAt}, @xml + end + + test "should allow skipped types" do + @xml = @contact.to_xml :skip_types => true + assert %r{<age>25</age>}.match(@xml) + end + + test "should include yielded additions" do + @xml = @contact.to_xml do |xml| + xml.creator "David" + end + assert_match %r{<creator>David</creator>}, @xml + end + + test "should serialize string" do + assert_match %r{<name>aaron stack</name>}, @contact.to_xml + end + + test "should serialize integer" do + assert_match %r{<age type="integer">25</age>}, @contact.to_xml + end + + test "should serialize datetime" do + assert_match %r{<created-at type=\"datetime\">2006-08-01T00:00:00Z</created-at>}, @contact.to_xml + end + + test "should serialize boolean" do + assert_match %r{<awesome type=\"boolean\">false</awesome>}, @contact.to_xml + end + + test "should serialize yaml" do + assert_match %r{<preferences type=\"yaml\">--- \n:gem: ruby\n</preferences>}, @contact.to_xml + end +end |