ActiveModel::Errors json serialization to work as Rails 3b4 [#5254 state:resolved]

Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
Alex Le 2010-07-30 15:47:26 -05:00 committed by José Valim
parent 59cf514a5b
commit aeaab06c79
3 changed files with 22 additions and 6 deletions

View File

@ -169,9 +169,9 @@ module ActiveModel
to_a.to_xml options.reverse_merge(:root => "errors", :skip_types => true)
end
# Returns an array as JSON representation for this object.
# Returns an ActiveSupport::OrderedHash that can be used as the JSON representation for this object.
def as_json(options=nil)
to_a
self
end
# Adds +message+ to the error messages on +attribute+, which will be returned on a call to

View File

@ -89,7 +89,7 @@ class JsonSerializationTest < ActiveModel::TestCase
assert_match %r{"preferences":\{"shows":"anime"\}}, json
end
test "methds are called on object" do
test "methods are called on object" do
# Define methods on fixture.
def @contact.label; "Has cheezburger"; end
def @contact.favorite_quote; "Constraints are liberating"; end
@ -102,4 +102,18 @@ class JsonSerializationTest < ActiveModel::TestCase
assert_match %r{"label":"Has cheezburger"}, methods_json
assert_match %r{"favorite_quote":"Constraints are liberating"}, methods_json
end
test "should return OrderedHash for errors" do
car = Automobile.new
# run the validation
car.valid?
hash = ActiveSupport::OrderedHash.new
hash[:make] = "can't be blank"
hash[:model] = "is too short (minimum is 2 characters)"
assert_equal hash.to_json, car.errors.to_json
end
end

View File

@ -170,9 +170,11 @@ class ValidationsTest < ActiveModel::TestCase
assert_match %r{<errors>}, xml
assert_match %r{<error>Title can't be blank</error>}, xml
assert_match %r{<error>Content can't be blank</error>}, xml
json = t.errors.to_json
assert_equal t.errors.to_a.to_json, json
hash = ActiveSupport::OrderedHash.new
hash[:title] = "can't be blank"
hash[:content] = "can't be blank"
assert_equal t.errors.to_json, hash.to_json
end
def test_validation_order