1 require File.dirname(__FILE__) + '/helper'
3 context "Dispatching" do
8 Sinatra.setup_default_events!
11 specify "should return the correct block" do
16 result = Sinatra.determine_route(:get, '/')
17 result.block.should.be r.block
20 specify "should return custom 404" do
21 Sinatra.routes[404] = r = Proc.new { 'custom 404' }
23 result = Sinatra.determine_route(:get, '/')
27 specify "should return standard 404" do
29 status.should.equal 404
30 body.should.equal '<h1>Not Found</h1>'
33 specify "should give custom 500 if error when called" do
34 Sinatra.routes[500] = r = Proc.new { 'custom 500' }
44 body.should.equal 'custom 500'
47 specify "should give standard 500 if error when called" do
56 body.should.match(/^asdf/)
59 specify "should run in a context" do
60 Sinatra::EventContext.any_instance.expects(:foo).returns 'in foo'
67 body.should.equal 'in foo'
70 specify "has access to the request" do
78 body.should.equal '/blake'
82 specify "has DSLified methods for response" do
90 body.should.equal "uh oh"
91 status.should.equal 555
96 context "An Event in test mode" do
100 Sinatra.setup_default_events!
103 specify "should raise errors to top" do
108 lambda { get_it '/' }.should.raise(RuntimeError)