spec/gaffe/errors_spec.rb in gaffe-0.2 vs spec/gaffe/errors_spec.rb in gaffe-0.2.1
- old
+ new
@@ -3,15 +3,30 @@
describe Gaffe::Errors do
describe :Actions do
describe :show do
let(:request) { ActionDispatch::TestRequest.new }
let(:env) { request.env.merge 'action_dispatch.exception' => exception }
- let(:exception) { ActionController::RoutingError.new(:foo) }
let(:response) { Gaffe.errors_controller_for_request(env).action(:show).call(env) }
subject { response.last }
- its(:status) { should eql 404 }
- its(:body) { should match /Not Found/ }
+ context 'with builtin exception' do
+ let(:exception) { ActionController::RoutingError.new(:foo) }
+ its(:status) { should eql 404 }
+ its(:body) { should match /Not Found/ }
+ end
+
+ context 'with custom exception and missing view' do
+ before { ActionDispatch::ExceptionWrapper.rescue_responses.merge! exception_class.name => 'my_custom_error' }
+
+ let(:exception_class) do
+ Object.instance_eval { remove_const :MyCustomError } if Object.const_defined?(:MyCustomError)
+ MyCustomError = Class.new(StandardError)
+ end
+
+ let(:exception) { exception_class.new }
+ its(:status) { should eql 500 }
+ its(:body) { should match /Internal Server Error/ }
+ end
end
end
end