summaryrefslogtreecommitdiff
path: root/spec/integration
diff options
context:
space:
mode:
authorGibheer <gibheer@gmail.com>2012-10-11 06:38:55 +0200
committerGibheer <gibheer@gmail.com>2012-10-13 11:48:11 +0200
commit79537632ac62957f1de6f189878d6757b0dd6abb (patch)
tree2ad80848505c04943639ebc838d89704b4402133 /spec/integration
parent1c1bda6b66a13b41d53e8ea0bb46debe23ddfd6e (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.rb49
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