提交 eb0e8e21 编写于 作者: A Arthur Nogueira Neves

Merge pull request #22511 from jonatack/redirect-to-302

Show redirect response code in assert_response messages
......@@ -85,17 +85,15 @@ def normalize_argument_to_redirection(fragment)
end
end
def generate_response_message(type)
message = "Expected response to be a <#{type}>, but was"
if @response.redirection?
redirect_is = normalize_argument_to_redirection(@response.location)
message << " a redirect to <#{redirect_is}>"
else
message << " <#{@response.response_code}>"
end
def generate_response_message(type, code = @response.response_code)
"Expected response to be a <#{type}>, but was a <#{code}>"
.concat location_if_redirected
end
message
def location_if_redirected
return '' unless @response.redirection? && @response.location.present?
location = normalize_argument_to_redirection(@response.location)
" redirect to <#{location}>"
end
end
end
......
......@@ -64,14 +64,35 @@ def test_assert_response_sym_typo
}
end
def test_message_when_response_is_redirect_but_asserted_for_status_other_than_redirect
@response = FakeResponse.new :redirection, "http://test.host/posts/redirect/1"
error = assert_raises(Minitest::Assertion) do
assert_response :success
end
def test_error_message_shows_404_when_404_asserted_for_success
@response = ActionDispatch::Response.new
@response.status = 404
error = assert_raises(Minitest::Assertion) { assert_response :success }
expected = "Expected response to be a <success>, but was a <404>"
assert_match expected, error.message
end
def test_error_message_shows_302_redirect_when_302_asserted_for_success
@response = ActionDispatch::Response.new
@response.status = 302
@response.location = 'http://test.host/posts/redirect/1'
error = assert_raises(Minitest::Assertion) { assert_response :success }
expected = "Expected response to be a <success>, but was a <302>" \
" redirect to <http://test.host/posts/redirect/1>"
assert_match expected, error.message
end
def test_error_message_shows_302_redirect_when_302_asserted_for_301
@response = ActionDispatch::Response.new
@response.status = 302
@response.location = 'http://test.host/posts/redirect/2'
expected = "Expected response to be a <success>, but was a redirect to <http://test.host/posts/redirect/1>"
assert_equal expected, error.message
error = assert_raises(Minitest::Assertion) { assert_response 301 }
expected = "Expected response to be a <301>, but was a <302>" \
" redirect to <http://test.host/posts/redirect/2>"
assert_match expected, error.message
end
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册