0
0
zero/spec/integration/router_spec.rb
2012-11-13 07:47:26 +01:00

56 lines
1.5 KiB
Ruby

require 'spec_helper'
describe Zero::Router do
let(:router) { Zero::Router.new(routes) }
subject { router.call(env) }
# let(:app) do
# lambda {|env| [200, {'Content-Type' => 'text/html'}, 'correct'] }
# end
let(:app) { double }
let(:wrong_app) do
lambda {|env| [200, {'Content-Type' => 'text/html'}, 'Wrong'] }
end
before :each do
app.should_receive(:call)
end
context 'it recognizes root' do
let(:routes) { { '/' => app } }
let(:env) { EnvGenerator.get('/') }
it('handles /') { subject }
end
context 'a working route' do
let(:routes) { { '/app' => app } }
let(:env) { EnvGenerator.get('/app') }
it('takes a route') { subject }
end
context 'select the right route' do
let(:routes) do
{ '/wrong' => wrong_app,
'/correct' => app }
end
let(:env) { EnvGenerator.get('/correct') }
it("selects the correct from multiple routes") { subject }
end
context 'uses the deepest path' do
let(:routes) { { '/wrong' => wrong_app,
'/deep' => wrong_app,
'/deep/wrong' => wrong_app,
'/deep/correct' => app }}
let(:env) { EnvGenerator.get('/deep/correct') }
it("finds uses the deepest path first") { subject }
end
context 'converts parts of the url to parameters' do
let(:routes) { { '/foo/:id' => app } }
let(:env) { EnvGenerator.get('/foo/42') }
it "should extract variables from the url" do
subject
end
end
end