1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
# -*- encoding: utf-8 -*-
require 'support'
require 'mustermann/identity'
describe Mustermann::Identity do
extend Support::Pattern
pattern '' do
it { should match('') }
it { should_not match('/') }
it { should respond_to(:expand) }
it { should respond_to(:to_templates) }
it { should generate_template('') }
it { should expand.to('') }
it { should expand(:ignore, a: 10).to('') }
it { should expand(:append, a: 10).to('?a=10') }
it { should_not expand(:raise, a: 10) }
it { should_not expand(a: 10) }
example do
pattern.match('').inspect.should be == '#<Mustermann::SimpleMatch "">'
end
end
pattern '/' do
it { should match('/') }
it { should_not match('/foo') }
example { pattern.params('/').should be == {} }
example { pattern.params('').should be_nil }
it { should generate_template('/') }
it { should expand.to('/') }
end
pattern '/foo' do
it { should match('/foo') }
it { should_not match('/bar') }
it { should_not match('/foo.bar') }
end
pattern '/foo/bar' do
it { should match('/foo/bar') }
it { should match('/foo%2Fbar') }
it { should match('/foo%2fbar') }
end
pattern '/:foo' do
it { should match('/:foo') }
it { should match('/%3Afoo') }
it { should_not match('/foo') }
it { should_not match('/foo?') }
it { should_not match('/foo/bar') }
it { should_not match('/') }
it { should_not match('/foo/') }
it { should generate_template('/:foo') }
it { should expand.to('/:foo') }
end
pattern '/föö' do
it { should match("/f%C3%B6%C3%B6") }
end
pattern '/test$/' do
it { should match('/test$/') }
end
pattern '/te+st/' do
it { should match('/te+st/') }
it { should_not match('/test/') }
it { should_not match('/teest/') }
end
pattern "/path with spaces" do
it { should match('/path%20with%20spaces') }
it { should_not match('/path%2Bwith%2Bspaces') }
it { should_not match('/path+with+spaces') }
it { should generate_template('/path%20with%20spaces') }
end
pattern '/foo&bar' do
it { should match('/foo&bar') }
end
pattern '/test.bar' do
it { should match('/test.bar') }
it { should_not match('/test0bar') }
end
pattern '/foo/bar', uri_decode: false do
it { should match('/foo/bar') }
it { should_not match('/foo%2Fbar') }
it { should_not match('/foo%2fbar') }
end
pattern "/path with spaces", uri_decode: false do
it { should_not match('/path%20with%20spaces') }
it { should_not match('/path%2Bwith%2Bspaces') }
it { should_not match('/path+with+spaces') }
end
context "peeking" do
subject(:pattern) { Mustermann::Identity.new("foo bar") }
describe :peek_size do
example { pattern.peek_size("foo bar blah") .should be == "foo bar".size }
example { pattern.peek_size("foo%20bar blah") .should be == "foo%20bar".size }
example { pattern.peek_size("foobar") .should be_nil }
end
describe :peek_match do
example { pattern.peek_match("foo bar blah").to_s .should be == "foo bar" }
example { pattern.peek_match("foo%20bar blah").to_s .should be == "foo%20bar" }
example { pattern.peek_match("foobar") .should be_nil }
end
describe :peek_params do
example { pattern.peek_params("foo bar blah") .should be == [{}, "foo bar".size] }
example { pattern.peek_params("foo%20bar blah") .should be == [{}, "foo%20bar".size] }
example { pattern.peek_params("foobar") .should be_nil }
end
end
end
|