invoke results with a block; not the body
This commit is contained in:
parent
18d3c8714f
commit
03b080973b
|
@ -3,7 +3,7 @@ require 'rack'
|
|||
|
||||
module Sinatra
|
||||
|
||||
Result = Struct.new(:body, :params)
|
||||
Result = Struct.new(:block, :params)
|
||||
|
||||
class Event
|
||||
|
||||
|
@ -26,7 +26,7 @@ module Sinatra
|
|||
def invoke(env)
|
||||
return unless pattern =~ env['PATH_INFO'].squeeze('/')
|
||||
params = param_keys.zip($~.captures.map(&:from_param)).to_hash
|
||||
Result.new(block.call, params)
|
||||
Result.new(block, params)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,15 +1,14 @@
|
|||
require File.dirname(__FILE__) + '/helper'
|
||||
|
||||
context "Simple Events" do
|
||||
context "Looking up a request" do
|
||||
|
||||
setup do
|
||||
@app = Sinatra::Application.new
|
||||
end
|
||||
|
||||
specify "return what's at the end" do
|
||||
@app.define_event(:get, '/') do
|
||||
'Hello'
|
||||
end
|
||||
specify "returns what's at the end" do
|
||||
block = Proc.new { 'Hello' }
|
||||
@app.define_event(:get, '/', &block)
|
||||
|
||||
result = @app.lookup(
|
||||
'REQUEST_METHOD' => 'GET',
|
||||
|
@ -17,13 +16,12 @@ context "Simple Events" do
|
|||
)
|
||||
|
||||
result.should.not.be.nil
|
||||
result.body.should.equal 'Hello'
|
||||
result.block.should.be block
|
||||
end
|
||||
|
||||
specify "takes params in path" do
|
||||
@app.define_event(:get, '/:foo') do
|
||||
'World'
|
||||
end
|
||||
block = Proc.new { 'Hello' }
|
||||
@app.define_event(:get, '/:foo', &block)
|
||||
|
||||
result = @app.lookup(
|
||||
'REQUEST_METHOD' => 'GET',
|
||||
|
@ -31,7 +29,7 @@ context "Simple Events" do
|
|||
)
|
||||
|
||||
result.should.not.be.nil
|
||||
result.body.should.equal 'World'
|
||||
result.block.should.be block
|
||||
result.params.should.equal :foo => 'bar'
|
||||
end
|
||||
|
||||
|
|
|
@ -12,15 +12,16 @@ context "Simple Events" do
|
|||
}
|
||||
end
|
||||
|
||||
def invoke_simple(path, request_path)
|
||||
event = Sinatra::Event.new(path) { 'Simple' }
|
||||
def invoke_simple(path, request_path, &b)
|
||||
event = Sinatra::Event.new(path, &b)
|
||||
event.invoke(simple_request_hash(:get, request_path))
|
||||
end
|
||||
|
||||
specify "return last value" do
|
||||
result = invoke_simple('/', '/')
|
||||
block = Proc.new { 'Simple' }
|
||||
result = invoke_simple('/', '/', &block)
|
||||
result.should.not.be.nil
|
||||
result.body.should.equal 'Simple'
|
||||
result.block.should.be block
|
||||
result.params.should.equal Hash.new
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue