returning
This commit is contained in:
parent
538567319f
commit
14c12df898
|
@ -78,6 +78,7 @@ module Sinatra
|
||||||
)
|
)
|
||||||
returned = context.instance_eval(&result.block)
|
returned = context.instance_eval(&result.block)
|
||||||
context.body ||= returned
|
context.body ||= returned
|
||||||
|
context.body = String === context.body ? [*context.body] : context.body
|
||||||
context.finish
|
context.finish
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -35,15 +35,12 @@ context "Looking up a request" do
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "An app returns" do
|
||||||
context "Calling an app" do
|
|
||||||
|
|
||||||
setup do
|
setup do
|
||||||
@app = Sinatra::Application.new
|
@app = Sinatra::Application.new
|
||||||
end
|
end
|
||||||
|
|
||||||
# - 404 if no events found
|
|
||||||
|
|
||||||
specify "404 if no events found" do
|
specify "404 if no events found" do
|
||||||
request = Rack::MockRequest.new(@app)
|
request = Rack::MockRequest.new(@app)
|
||||||
result = request.get('/')
|
result = request.get('/')
|
||||||
|
@ -62,7 +59,50 @@ context "Calling an app" do
|
||||||
result.body.should.equal 'Hello World'
|
result.body.should.equal 'Hello World'
|
||||||
end
|
end
|
||||||
|
|
||||||
specify "evaluates events in a clean context" do
|
specify "an objects result from each if it has it" do
|
||||||
|
|
||||||
|
class TesterWithEach
|
||||||
|
def each
|
||||||
|
yield 'foo'
|
||||||
|
yield 'bar'
|
||||||
|
yield 'baz'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@app.define_event(:get, '/') do
|
||||||
|
TesterWithEach.new
|
||||||
|
end
|
||||||
|
|
||||||
|
request = Rack::MockRequest.new(@app)
|
||||||
|
result = request.get('/')
|
||||||
|
result.should.be.ok
|
||||||
|
result.body.should.equal 'foobarbaz'
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
specify "the body set if set before the last" do
|
||||||
|
|
||||||
|
@app.define_event(:get, '/') do
|
||||||
|
self.body = 'Blake'
|
||||||
|
'Mizerany'
|
||||||
|
end
|
||||||
|
|
||||||
|
request = Rack::MockRequest.new(@app)
|
||||||
|
result = request.get('/')
|
||||||
|
result.should.be.ok
|
||||||
|
result.body.should.equal 'Blake'
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
context "Events in an app" do
|
||||||
|
|
||||||
|
setup do
|
||||||
|
@app = Sinatra::Application.new
|
||||||
|
end
|
||||||
|
|
||||||
|
specify "evaluate in a clean context" do
|
||||||
Sinatra::EventContext.class_eval do
|
Sinatra::EventContext.class_eval do
|
||||||
def foo
|
def foo
|
||||||
'foo'
|
'foo'
|
||||||
|
@ -79,7 +119,7 @@ context "Calling an app" do
|
||||||
result.body.should.equal 'foo'
|
result.body.should.equal 'foo'
|
||||||
end
|
end
|
||||||
|
|
||||||
specify "gives the event access to request, response, and params" do
|
specify "get access to request, response, and params" do
|
||||||
@app.define_event(:get, '/:foo') do
|
@app.define_event(:get, '/:foo') do
|
||||||
params[:foo] + params[:bar]
|
params[:foo] + params[:bar]
|
||||||
end
|
end
|
||||||
|
@ -91,3 +131,5 @@ context "Calling an app" do
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
require File.dirname(__FILE__) + '/../lib/sinatra'
|
require File.dirname(__FILE__) + '/../lib/sinatra'
|
||||||
|
|
||||||
require 'rubygems'
|
require "rubygems"
|
||||||
require 'test/spec'
|
require "test/spec"
|
||||||
|
require "mocha"
|
||||||
|
|
||||||
module Sinatra::TestHelper
|
module Sinatra::TestHelper
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue