1use strict; 2use warnings; 3use Test::More; 4use Test::Fatal; 5use Dancer2::Core::Route; 6 7plan tests => 3; 8 9my @no_leading_slash = ( 'no+leading+slash', '' ); 10my @leading_slash = ('/+leading+slash', '/', '//' ); 11 12subtest "no prefix, paths without a leading slash" => sub { 13 for my $string ( @no_leading_slash ) { 14 my $route; 15 my $exception = exception { 16 $route = Dancer2::Core::Route->new( 17 regexp => $string, 18 method => 'get', 19 code => sub {1}, 20 ); 21 }; 22 is( $exception, undef, 23 "'$string' is a valid route pattern" 24 ); 25 is( $route->spec_route, "/$string", 26 "undef prefix prepends '/' to spec_route" 27 ); 28 } 29}; 30 31subtest "no prefix, paths with a leading slash" => sub { 32 for my $string ( @leading_slash ) { 33 my $route; 34 my $exception = exception { 35 $route = Dancer2::Core::Route->new( 36 regexp => $string, 37 method => 'get', 38 code => sub {1}, 39 ); 40 }; 41 is( $exception, undef, 42 "'$string' is a valid route pattern" 43 ); 44 is( $route->spec_route, $string, 45 "undef prefix does not prepend '/' to spec_route" 46 ); 47 } 48}; 49 50subtest "prefix and paths append" => sub { 51 my $prefix = '/prefix'; 52 for my $string ( @no_leading_slash, @leading_slash) { 53 my $route; 54 my $exception = exception { 55 $route = Dancer2::Core::Route->new( 56 regexp => $string, 57 prefix => $prefix, 58 method => 'get', 59 code => sub {1}, 60 ); 61 }; 62 is( $exception, undef, 63 "'$prefix$string' is a valid route pattern" 64 ); 65 } 66}; 67 68