mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Merge pull request #3272 from odorcicd/fix_json_error_root
JSON responder should return errors with :errors root
This commit is contained in:
@@ -253,7 +253,7 @@ module ActionController #:nodoc:
|
||||
end
|
||||
|
||||
def display_errors
|
||||
controller.render format => resource.errors, :status => :unprocessable_entity
|
||||
controller.render format => resource_errors, :status => :unprocessable_entity
|
||||
end
|
||||
|
||||
# Check whether the resource has errors.
|
||||
@@ -286,5 +286,13 @@ module ActionController #:nodoc:
|
||||
def empty_json_resource
|
||||
"{}"
|
||||
end
|
||||
|
||||
def resource_errors
|
||||
respond_to?("#{format}_resource_errors") ? send("#{format}_resource_errors") : resource.errors
|
||||
end
|
||||
|
||||
def json_resource_errors
|
||||
{:errors => resource.errors}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -745,6 +745,20 @@ class RespondWithControllerTest < ActionController::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
def test_using_resource_for_post_with_json_yields_unprocessable_entity_on_failure
|
||||
with_test_route_set do
|
||||
@request.accept = "application/json"
|
||||
errors = { :name => :invalid }
|
||||
Customer.any_instance.stubs(:errors).returns(errors)
|
||||
post :using_resource
|
||||
assert_equal "application/json", @response.content_type
|
||||
assert_equal 422, @response.status
|
||||
errors = {:errors => errors}
|
||||
assert_equal errors.to_json, @response.body
|
||||
assert_nil @response.location
|
||||
end
|
||||
end
|
||||
|
||||
def test_using_resource_for_put_with_html_redirects_on_success
|
||||
with_test_route_set do
|
||||
put :using_resource
|
||||
@@ -808,6 +822,18 @@ class RespondWithControllerTest < ActionController::TestCase
|
||||
assert_nil @response.location
|
||||
end
|
||||
|
||||
def test_using_resource_for_put_with_json_yields_unprocessable_entity_on_failure
|
||||
@request.accept = "application/json"
|
||||
errors = { :name => :invalid }
|
||||
Customer.any_instance.stubs(:errors).returns(errors)
|
||||
put :using_resource
|
||||
assert_equal "application/json", @response.content_type
|
||||
assert_equal 422, @response.status
|
||||
errors = {:errors => errors}
|
||||
assert_equal errors.to_json, @response.body
|
||||
assert_nil @response.location
|
||||
end
|
||||
|
||||
def test_using_resource_for_delete_with_html_redirects_on_success
|
||||
with_test_route_set do
|
||||
Customer.any_instance.stubs(:destroyed?).returns(true)
|
||||
|
||||
Reference in New Issue
Block a user