test/mapped_error_test.rb in rtomayko-sinatra-0.9.0 vs test/mapped_error_test.rb in rtomayko-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