diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2008-01-18 07:30:42 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-01-18 07:30:42 +0000 |
commit | 42b39ae3f2991692672364d7e09b1e4002e66261 (patch) | |
tree | cddaf1eb2dbf7be27430bde882432db3b1cc0407 /activerecord/test/json_serialization_test.rb | |
parent | 105a27f39ee9dbfd7fdb2b25e5ba38b00708b66c (diff) | |
download | rails-42b39ae3f2991692672364d7e09b1e4002e66261.tar.gz rails-42b39ae3f2991692672364d7e09b1e4002e66261.tar.bz2 rails-42b39ae3f2991692672364d7e09b1e4002e66261.zip |
Move tests to cases
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8660 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test/json_serialization_test.rb')
-rw-r--r-- | activerecord/test/json_serialization_test.rb | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/activerecord/test/json_serialization_test.rb b/activerecord/test/json_serialization_test.rb deleted file mode 100644 index 49711f625b..0000000000 --- a/activerecord/test/json_serialization_test.rb +++ /dev/null @@ -1,180 +0,0 @@ -require 'abstract_unit' -require 'fixtures/contact' -require 'fixtures/post' -require 'fixtures/author' -require 'fixtures/tagging' -require 'fixtures/tag' -require 'fixtures/comment' - -class JsonSerializationTest < ActiveSupport::TestCase - def setup - @contact = Contact.new( - :name => 'Konata Izumi', - :age => 16, - :avatar => 'binarydata', - :created_at => Time.utc(2006, 8, 1), - :awesome => true, - :preferences => { :shows => 'anime' } - ) - end - - def test_should_encode_all_encodable_attributes - json = @contact.to_json - - assert_match %r{"name": "Konata Izumi"}, json - assert_match %r{"age": 16}, json - assert json.include?(%("created_at": #{ActiveSupport::JSON.encode(Time.utc(2006, 8, 1))})) - assert_match %r{"awesome": true}, json - assert_match %r{"preferences": \{"shows": "anime"\}}, json - end - - def test_should_allow_attribute_filtering_with_only - json = @contact.to_json(:only => [:name, :age]) - - assert_match %r{"name": "Konata Izumi"}, json - assert_match %r{"age": 16}, json - assert_no_match %r{"awesome": true}, json - assert !json.include?(%("created_at": #{ActiveSupport::JSON.encode(Time.utc(2006, 8, 1))})) - assert_no_match %r{"preferences": \{"shows": "anime"\}}, json - end - - def test_should_allow_attribute_filtering_with_except - json = @contact.to_json(:except => [:name, :age]) - - assert_no_match %r{"name": "Konata Izumi"}, json - assert_no_match %r{"age": 16}, json - assert_match %r{"awesome": true}, json - assert json.include?(%("created_at": #{ActiveSupport::JSON.encode(Time.utc(2006, 8, 1))})) - assert_match %r{"preferences": \{"shows": "anime"\}}, json - end - - def test_methods_are_called_on_object - # 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 - -class DatabaseConnectedJsonEncodingTest < ActiveSupport::TestCase - fixtures :authors, :posts, :comments, :tags, :taggings - - def setup - @david = authors(:david) - @mary = authors(:mary) - end - - def test_includes_uses_association_name - json = @david.to_json(:include => :posts) - - assert_match %r{"posts": \[}, json - - assert_match %r{"id": 1}, json - assert_match %r{"name": "David"}, json - - assert_match %r{"author_id": 1}, json - assert_match %r{"title": "Welcome to the weblog"}, json - assert_match %r{"body": "Such a lovely day"}, json - - assert_match %r{"title": "So I was thinking"}, json - assert_match %r{"body": "Like I hopefully always am"}, json - end - - def test_includes_uses_association_name_and_applies_attribute_filters - json = @david.to_json(:include => { :posts => { :only => :title } }) - - assert_match %r{"name": "David"}, json - assert_match %r{"posts": \[}, json - - assert_match %r{"title": "Welcome to the weblog"}, json - assert_no_match %r{"body": "Such a lovely day"}, json - - assert_match %r{"title": "So I was thinking"}, json - assert_no_match %r{"body": "Like I hopefully always am"}, json - end - - def test_includes_fetches_second_level_associations - json = @david.to_json(:include => { :posts => { :include => { :comments => { :only => :body } } } }) - - assert_match %r{"name": "David"}, json - assert_match %r{"posts": \[}, json - - assert_match %r{"comments": \[}, json - assert_match %r{\{"body": "Thank you again for the welcome"\}}, json - assert_match %r{\{"body": "Don't think too hard"\}}, json - assert_no_match %r{"post_id": }, json - end - - def test_includes_fetches_nth_level_associations - json = @david.to_json( - :include => { - :posts => { - :include => { - :taggings => { - :include => { - :tag => { :only => :name } - } - } - } - } - }) - - assert_match %r{"name": "David"}, json - assert_match %r{"posts": \[}, json - - assert_match %r{"taggings": \[}, json - assert_match %r{"tag": \{"name": "General"\}}, json - end - - def test_should_not_call_methods_on_associations_that_dont_respond - def @david.favorite_quote; "Constraints are liberating"; end - json = @david.to_json(:include => :posts, :methods => :favorite_quote) - - assert !@david.posts.first.respond_to?(:favorite_quote) - assert_match %r{"favorite_quote": "Constraints are liberating"}, json - assert_equal %r{"favorite_quote": }.match(json).size, 1 - end - - def test_should_allow_only_option_for_list_of_authors - authors = [@david, @mary] - - assert_equal %([{"name": "David"}, {"name": "Mary"}]), authors.to_json(:only => :name) - end - - def test_should_allow_except_option_for_list_of_authors - authors = [@david, @mary] - - assert_equal %([{"id": 1}, {"id": 2}]), authors.to_json(:except => [:name, :author_address_id]) - end - - def test_should_allow_includes_for_list_of_authors - authors = [@david, @mary] - json = authors.to_json( - :only => :name, - :include => { - :posts => { :only => :id } - } - ) - - ['"name": "David"', '"posts": [', '{"id": 1}', '{"id": 2}', '{"id": 4}', - '{"id": 5}', '{"id": 6}', '"name": "Mary"', '"posts": [{"id": 7}]'].each do |fragment| - assert json.include?(fragment), json - end - end - - def test_should_allow_options_for_hash_of_authors - authors_hash = { - 1 => @david, - 2 => @mary - } - - assert_equal %({1: {"name": "David"}}), authors_hash.to_json(:only => [1, :name]) - end -end |