From 3464a7e79c373947ea7d57c543e36f41bd62049e Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Sat, 5 Jan 2008 02:19:48 +0000 Subject: assert_response failures include the exception message. Closes #10688. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8559 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ .../assertions/response_assertions.rb | 6 +++++- .../test/controller/action_pack_assertions_test.rb | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) (limited to 'actionpack') diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 7ce2fb5c5b..e6fabd27fc 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* assert_response failures include the exception message. #10688 [Seth Rasmussen] + * All fragment cache keys are now by default prefixed with the "views/" namespace [DHH] * Moved the caching stores from ActionController::Caching::Fragments::* to ActiveSupport::Cache::*. If you're explicitly referring to a store, like ActionController::Caching::Fragments::MemoryStore, you need to update that reference with ActiveSupport::Cache::MemoryStore [DHH] diff --git a/actionpack/lib/action_controller/assertions/response_assertions.rb b/actionpack/lib/action_controller/assertions/response_assertions.rb index 42bd7fb3d2..67dd3a5724 100644 --- a/actionpack/lib/action_controller/assertions/response_assertions.rb +++ b/actionpack/lib/action_controller/assertions/response_assertions.rb @@ -33,7 +33,11 @@ module ActionController elsif type.is_a?(Symbol) && @response.response_code == ActionController::StatusCodes::SYMBOL_TO_STATUS_CODE[type] assert_block("") { true } # to count the assertion else - assert_block(build_message(message, "Expected response to be a , but was ", type, @response.response_code)) { false } + if @response.error? + assert_block(build_message(message, "Expected response to be a , but was \n", type, @response.response_code, @response.template.instance_variable_get(:@exception).message)) { false } + else + assert_block(build_message(message, "Expected response to be a , but was ", type, @response.response_code)) { false } + end end end end diff --git a/actionpack/test/controller/action_pack_assertions_test.rb b/actionpack/test/controller/action_pack_assertions_test.rb index 1eb9610d04..b1006f82be 100644 --- a/actionpack/test/controller/action_pack_assertions_test.rb +++ b/actionpack/test/controller/action_pack_assertions_test.rb @@ -124,6 +124,15 @@ class ActionPackAssertionsController < ActionController::Base def rescue_action(e) raise; end end +# Used to test that assert_response includes the exception message +# in the failure message when an action raises and assert_response +# is expecting something other than an error. +class AssertResponseWithUnexpectedErrorController < ActionController::Base + def index + raise 'FAIL' + end +end + module Admin class InnerModuleController < ActionController::Base def index @@ -465,6 +474,15 @@ class ActionPackAssertionsControllerTest < Test::Unit::TestCase rescue Test::Unit::AssertionFailedError => e end end + + def test_assert_response_uses_exception_message + @controller = AssertResponseWithUnexpectedErrorController.new + get :index + assert_response :success + flunk 'Expected non-success response' + rescue Test::Unit::AssertionFailedError => e + assert e.message.include?('FAIL') + end end class ActionPackHeaderTest < Test::Unit::TestCase -- cgit v1.2.3