diff options
author | Gibheer <gibheer@gmail.com> | 2012-10-11 06:38:55 +0200 |
---|---|---|
committer | Gibheer <gibheer@gmail.com> | 2012-10-13 11:48:11 +0200 |
commit | 79537632ac62957f1de6f189878d6757b0dd6abb (patch) | |
tree | 2ad80848505c04943639ebc838d89704b4402133 /spec/integration | |
parent | 1c1bda6b66a13b41d53e8ea0bb46debe23ddfd6e (diff) |
added new router to the tools
This small router is intended to work like URLMap, but with the feature
that it can extract variables from routes.
Diffstat (limited to 'spec/integration')
-rw-r--r-- | spec/integration/router_spec.rb | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/spec/integration/router_spec.rb b/spec/integration/router_spec.rb new file mode 100644 index 0000000..3be7b3a --- /dev/null +++ b/spec/integration/router_spec.rb @@ -0,0 +1,49 @@ +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 'a working route' do + let(:routes) { { '/app' => app } } + let(:env) { generate_env('/app') } + it('takes a route') { subject } + end + + context 'select the right route' do + let(:routes) do + { '/wrong' => wrong_app, + '/correct' => app } + end + let(:env) { generate_env('/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) { generate_env('/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) { generate_env('/foo/42') } + it "should extract variables from the url" do + subject + end + end +end |