mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
110 lines
2.4 KiB
Ruby
110 lines
2.4 KiB
Ruby
require 'abstract_unit'
|
|
|
|
module ActionDispatch
|
|
module Journey
|
|
module Definition
|
|
class TestParser < ActiveSupport::TestCase
|
|
def setup
|
|
@parser = Parser.new
|
|
end
|
|
|
|
def test_slash
|
|
assert_equal :SLASH, @parser.parse('/').type
|
|
assert_round_trip '/'
|
|
end
|
|
|
|
def test_segment
|
|
assert_round_trip '/foo'
|
|
end
|
|
|
|
def test_segments
|
|
assert_round_trip '/foo/bar'
|
|
end
|
|
|
|
def test_segment_symbol
|
|
assert_round_trip '/foo/:id'
|
|
end
|
|
|
|
def test_symbol
|
|
assert_round_trip '/:foo'
|
|
end
|
|
|
|
def test_group
|
|
assert_round_trip '(/:foo)'
|
|
end
|
|
|
|
def test_groups
|
|
assert_round_trip '(/:foo)(/:bar)'
|
|
end
|
|
|
|
def test_nested_groups
|
|
assert_round_trip '(/:foo(/:bar))'
|
|
end
|
|
|
|
def test_dot_symbol
|
|
assert_round_trip('.:format')
|
|
end
|
|
|
|
def test_dot_literal
|
|
assert_round_trip('.xml')
|
|
end
|
|
|
|
def test_segment_dot
|
|
assert_round_trip('/foo.:bar')
|
|
end
|
|
|
|
def test_segment_group_dot
|
|
assert_round_trip('/foo(.:bar)')
|
|
end
|
|
|
|
def test_segment_group
|
|
assert_round_trip('/foo(/:action)')
|
|
end
|
|
|
|
def test_segment_groups
|
|
assert_round_trip('/foo(/:action)(/:bar)')
|
|
end
|
|
|
|
def test_segment_nested_groups
|
|
assert_round_trip('/foo(/:action(/:bar))')
|
|
end
|
|
|
|
def test_group_followed_by_path
|
|
assert_round_trip('/foo(/:action)/:bar')
|
|
end
|
|
|
|
def test_star
|
|
assert_round_trip('*foo')
|
|
assert_round_trip('/*foo')
|
|
assert_round_trip('/bar/*foo')
|
|
assert_round_trip('/bar/(*foo)')
|
|
end
|
|
|
|
def test_or
|
|
assert_round_trip('a|b')
|
|
assert_round_trip('a|b|c')
|
|
assert_round_trip('(a|b)|c')
|
|
assert_round_trip('a|(b|c)')
|
|
assert_round_trip('*a|(b|c)')
|
|
assert_round_trip('*a|:b|c')
|
|
end
|
|
|
|
def test_arbitrary
|
|
assert_round_trip('/bar/*foo#')
|
|
end
|
|
|
|
def test_literal_dot_paren
|
|
assert_round_trip "/sprockets.js(.:format)"
|
|
end
|
|
|
|
def test_groups_with_dot
|
|
assert_round_trip "/(:locale)(.:format)"
|
|
end
|
|
|
|
def assert_round_trip str
|
|
assert_equal str, @parser.parse(str).to_s
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|