http_router/test/test_recognition.rb

37 lines
1.2 KiB
Ruby

class TestRecognition < MiniTest::Unit::TestCase
if //.respond_to?(:names)
eval <<-EOT
def test_match_path_with_groups
r = router { add(%r{/(?<year>\\d{4})/(?<month>\\d{2})/(?<day>\\d{2})/?}) }
assert_route r, "/1234/23/56", {:year => "1234", :month => "23", :day => "56"}
end
EOT
end
def test_non_path_matching
passed, working = router {
add(:conditions => {:user_agent => /MSIE/}).to { |env| [200, {}, ['IE']] }
add('/').to { |env| [200, {}, ['SOMETHING ELSE']] }
}
assert_body 'SOMETHING ELSE', router.call(Rack::MockRequest.env_for('/'))
assert_body 'IE', router.call(Rack::MockRequest.env_for('/', 'HTTP_USER_AGENT' => 'THIS IS MSIE DAWG'))
end
def test_passing_with_cascade
passed, working = router {
add('/').to { |env| [200, {'X-Cascade' => 'pass'}, ['pass']] }
add('/').to { |env| [200, {}, ['working']] }
}
assert_body 'working', router.call(Rack::MockRequest.env_for('/'))
end
def test_compiling_uncompiling
@router = router
root = @router.add('/').default_destination
assert_route root, '/'
test = @router.add('/test').default_destination
assert_route root, '/'
assert_route test, '/test'
end
end