@@ -4,7 +4,7 @@ use warnings;
44
55use Test::More;
66
7- use Types::Standard qw( Int) ;
7+ use Types::Standard qw( Int Str ) ;
88
99use Raisin::Param;
1010use Raisin::Routes::Endpoint;
@@ -75,13 +75,12 @@ my @CASES = (
7575 input => { method => ' put' , path => ' /api/item/42' },
7676 expected => undef ,
7777 },
78- # TODO: GitHub issue #14
7978 {
8079 object => {
8180 method => ' GET' ,
82- path => ' /api/user/:id ' ,
81+ path => ' /domain/:name ' ,
8382 },
84- input => { method => ' get' , path => ' /api/user/i.d ' },
83+ input => { method => ' get' , path => ' /domain/example.com ' },
8584 expected => 1,
8685 },
8786);
@@ -94,7 +93,6 @@ sub _make_object {
9493subtest ' accessors' => sub {
9594 for my $case (@CASES ) {
9695 my $e = _make_object($case -> {object });
97- # isa_ok $e, 'Raisin::Routes::Endpoint', 'e';
9896
9997 subtest ' -' => sub {
10098 for my $m (keys %{ $case -> {object } }) {
@@ -108,21 +106,35 @@ subtest 'match' => sub {
108106 for my $case (@CASES ) {
109107 subtest " $case ->{object}{method}:$case ->{object}{path}" => sub {
110108 my $e = _make_object($case -> {object });
111- # isa_ok $e, 'Raisin::Routes::Endpoint', 'e';
112109
113110 my $is_matched = $e -> match($case -> {input }{method }, $case -> {input }{path });
114-
115111 is $is_matched , $case -> {expected }, ' match' ;
116112
117113 # named params
118114 if ($is_matched && @{ $e -> params }) {
119115 for my $p (@{ $e -> params }) {
120- # TODO: GitHub issue #14
121116 ok $e -> named-> {$p -> name}, ' named: ' . $p -> name;
122117 }
123118 }
124119 };
125120 }
126121};
127122
123+ subtest ' _build_regex' => sub {
124+ my $e = Raisin::Routes::Endpoint-> new(
125+ code => sub { 1 },
126+ method => ' GET' ,
127+ params => [
128+ Raisin::Param-> new(
129+ named => 1,
130+ required => 1,
131+ spec => {name => ' name' , type => Str, regex => qr / [^.]+\. [^.]+/ ,},
132+ type => ' requires' ,
133+ ),
134+ ],
135+ path => ' /domain/:name' ,
136+ );
137+ is $e -> regex, ' (?^:^/domain/(?<name>(?^:[^.]+\.[^.]+))(?:\.[^.]+?)?$)' , ' regex' ;
138+ };
139+
128140done_testing;
0 commit comments