test/mapped_error_test.rb in bmizerany-sinatra-0.9.0 vs test/mapped_error_test.rb in bmizerany-sinatra-0.9.0.2
- old
+ new
@@ -1,12 +1,8 @@
-require 'test/spec'
-require 'sinatra/base'
-require 'sinatra/test'
+require File.dirname(__FILE__) + '/helper'
describe 'Exception Mappings' do
- include Sinatra::Test
-
class FooError < RuntimeError
end
it 'invokes handlers registered with ::error when raised' do
mock_app {
@@ -15,12 +11,12 @@
get '/' do
raise FooError
end
}
get '/'
- status.should.equal 500
- body.should.equal 'Foo!'
+ assert_equal 500, status
+ assert_equal 'Foo!', body
end
it 'uses the Exception handler if no matching handler found' do
mock_app {
set :raise_errors, false
@@ -28,50 +24,62 @@
get '/' do
raise FooError
end
}
get '/'
- status.should.equal 500
- body.should.equal 'Exception!'
+ assert_equal 500, status
+ assert_equal 'Exception!', body
end
it "sets env['sinatra.error'] to the rescued exception" do
mock_app {
set :raise_errors, false
error(FooError) {
- env.should.include 'sinatra.error'
- env['sinatra.error'].should.be.kind_of FooError
+ assert env.include?('sinatra.error')
+ assert env['sinatra.error'].kind_of?(FooError)
'looks good'
}
get '/' do
raise FooError
end
}
get '/'
- body.should.equal 'looks good'
+ assert_equal 'looks good', body
end
+ it 'dumps errors to rack.errors when dump_errors is enabled' do
+ mock_app {
+ set :raise_errors, false
+ set :dump_errors, true
+ get('/') { raise FooError, 'BOOM!' }
+ }
+
+ get '/'
+ assert_equal 500, status
+ assert @response.errors =~ /FooError - BOOM!:/
+ end
+
it "raises without calling the handler when the raise_errors options is set" do
mock_app {
set :raise_errors, true
error(FooError) { "she's not there." }
get '/' do
raise FooError
end
}
- lambda { get '/' }.should.raise FooError
+ assert_raise(FooError) { get '/' }
end
it "never raises Sinatra::NotFound beyond the application" do
mock_app {
set :raise_errors, true
get '/' do
raise Sinatra::NotFound
end
}
- lambda { get '/' }.should.not.raise Sinatra::NotFound
- status.should.equal 404
+ assert_nothing_raised { get '/' }
+ assert_equal 404, status
end
class FooNotFound < Sinatra::NotFound
end
@@ -81,15 +89,26 @@
error(FooNotFound) { "foo! not found." }
get '/' do
raise FooNotFound
end
}
- lambda { get '/' }.should.not.raise FooNotFound
- status.should.equal 404
- body.should.equal 'foo! not found.'
+ assert_nothing_raised { get '/' }
+ assert_equal 404, status
+ assert_equal 'foo! not found.', body
end
+ it 'has a not_found method for backwards compatibility' do
+ mock_app {
+ not_found do
+ "Lost, are we?"
+ end
+ }
+
+ get '/test'
+ assert_equal 404, status
+ assert_equal "Lost, are we?", body
+ end
end
describe 'Custom Error Pages' do
it 'allows numeric status code mappings to be registered with ::error' do
mock_app {
@@ -98,12 +117,12 @@
get '/' do
[500, {}, 'Internal Foo Error']
end
}
get '/'
- status.should.equal 500
- body.should.equal 'Foo!'
+ assert_equal 500, status
+ assert_equal 'Foo!', body
end
it 'allows ranges of status code mappings to be registered with :error' do
mock_app {
set :raise_errors, false
@@ -111,12 +130,12 @@
get '/' do
[507, {}, 'A very special error']
end
}
get '/'
- status.should.equal 507
- body.should.equal 'Error: 507'
+ assert_equal 507, status
+ assert_equal 'Error: 507', body
end
class FooError < RuntimeError
end
@@ -133,9 +152,9 @@
get '/' do
raise FooError
end
}
get '/'
- status.should.equal 502
- body.should.equal 'from custom error page'
+ assert_equal 502, status
+ assert_equal 'from custom error page', body
end
end