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