2a43a870102c65e617642d64ec46196aad8a7b77
[catagits/Catalyst-Runtime.git] / t / arg_constraints.t
1 use warnings;
2 use strict;
3
4 BEGIN {
5   use Test::More;
6   eval "use Types::Standard; 1;" || do {
7     plan skip_all => "Trouble loading Types::Standard => $@";
8   };
9 }
10
11 {
12   package MyApp::Controller::Root;
13   $INC{'MyApp/Controller/Root.pm'} = __FILE__;
14
15   use Moose;
16   use MooseX::MethodAttributes;
17   use Types::Standard qw/Tuple Int Str/;
18
19   extends 'Catalyst::Controller';
20
21   sub an_int :Local Args(Int) {
22     my ($self, $c, $int) = @_;
23     $c->res->body('an_int');
24   }
25
26   sub many_ints :Local Args(ArrayRef[Int]) {
27     my ($self, $c, $int) = @_;
28     $c->res->body('many_ints');
29   }
30
31   sub tuple :Local Args(Tuple[Str,Int]) {
32     my ($self, $c, $int) = @_;
33     $c->res->body('tuple');
34   }
35
36
37   sub any_priority :Path('priority_test') Args(1) { $_[1]->res->body('any_priority') }
38
39   sub int_priority :Path('priority_test') Args(Int) { $_[1]->res->body('int_priority') }
40
41   sub default :Default {
42     my ($self, $c, $int) = @_;
43     $c->res->body('default');
44   }
45
46   MyApp::Controller::Root->config(namespace=>'');
47
48   package MyApp;
49   use Catalyst;
50
51   #MyApp->config(show_internal_actions => 1);
52   MyApp->setup;
53 }
54
55 use Catalyst::Test 'MyApp';
56
57 {
58   my $res = request '/an_int/1';
59   is $res->content, 'an_int';
60 }
61
62 {
63   my $res = request '/an_int/aa';
64   is $res->content, 'default';
65 }
66
67 {
68   my $res = request '/many_ints/1';
69   is $res->content, 'many_ints';
70 }
71
72 {
73   my $res = request '/many_ints/1/2';
74   is $res->content, 'many_ints';
75 }
76
77 {
78   my $res = request '/many_ints/1/2/3';
79   is $res->content, 'many_ints';
80 }
81
82 {
83   my $res = request '/many_ints/1/2/a';
84   is $res->content, 'default';
85 }
86
87 {
88   my $res = request '/priority_test/1';
89   is $res->content, 'int_priority';
90 }
91
92 {
93   my $res = request '/priority_test/a';
94   is $res->content, 'any_priority';
95 }
96
97 {
98   my $res = request '/tuple/aaa/111';
99   is $res->content, 'tuple';
100 }
101
102 {
103   my $res = request '/tuple/aaa/aaa';
104   is $res->content, 'default';
105 }
106
107 done_testing;
108