1 require File.dirname(__FILE__) + '/../helper.rb'
3 describe "When a PrettyUrl is created" do
4 it "should remember its raw path" do
5 Sinatra::PrettyUrl.new('/foo/:bar').path.should.equal '/foo/:bar'
8 it "should match a uri with one to many params" do
9 Sinatra::PrettyUrl.new('/foo').matches?('/foo').should.equal true
10 Sinatra::PrettyUrl.new('/foo/:name.:format').matches?('/foo/blake2-test.xml').should.equal true
11 Sinatra::PrettyUrl.new('/foo/:name.:format').matches?('/foo/blake2-test..xml').should.equal false
12 Sinatra::PrettyUrl.new('/index').matches?('/foo').should.equal false
13 Sinatra::PrettyUrl.new('/').matches?('/bar').should.equal false
16 it "should extract vars as params" do
17 url = Sinatra::PrettyUrl.new('/foo/:name.:format')
18 params = url.extract_params('/foo/blake2-test.xml')
19 params.should.equal :format => "xml", :name => 'blake2-test'
22 it "should always add a format" do
23 url = Sinatra::PrettyUrl.new('/foo/:name')
24 params = url.extract_params('/foo/blake')
25 params[:format].should.equal "html"
26 params = url.extract_params('/foo/blake.xml')
27 params[:format].should.equal "xml"
30 it "should default to html format if not a valid format" do
31 url = Sinatra::PrettyUrl.new('/foo/:name')
32 params = url.extract_params('/foo/blake.mizerany')
33 params[:format].should.equal "html"