mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
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:
parent
59cf514a5b
commit
aeaab06c79
3 changed files with 22 additions and 6 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue