* If given format on path, extract and set in params; default to html if none specified.
[sinatra.git] / test / sinatra / pretty_url_test.rb
blob6fd5283e0b5a919cb7d0f84f0f270f817c90bc97
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'
6   end
7   
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
14   end
15   
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'
20   end
21   
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"
28   end
29   
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"
34   end
35   
36 end