Initial support for :Args attribute
[catagits/Catalyst-Runtime.git] / t / live_component_controller_action_local.t
index 6a5eefb..5177163 100644 (file)
@@ -10,7 +10,7 @@ our $iters;
 
 BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 2; }
 
-use Test::More tests => 24*$iters;
+use Test::More tests => 32*$iters;
 use Catalyst::Test 'TestApp';
 
 if ( $ENV{CAT_BENCHMARK} ) {
@@ -44,7 +44,7 @@ sub run_tests {
     }
 
     {
-        ok( my $response = request('http://localhost/action/local/two'),
+        ok( my $response = request('http://localhost/action/local/two/1/2'),
             'Request' );
         ok( $response->is_success, 'Response Successful 2xx' );
         is( $response->content_type, 'text/plain', 'Response Content-Type' );
@@ -63,6 +63,12 @@ sub run_tests {
     }
 
     {
+         ok( my $response = request('http://localhost/action/local/two'),
+               'Request' );
+         ok( !$response->is_success, 'Request with wrong number of args failed' );
+    }
+
+    {
         ok( my $response = request('http://localhost/action/local/three'),
             'Request' );
         ok( $response->is_success, 'Response Successful 2xx' );
@@ -102,4 +108,26 @@ sub run_tests {
             'Content is a serialized Catalyst::Request'
         );
     }
+
+    {
+        ok(
+            my $response =
+              request('http://localhost/action/local/one/foo%2Fbar'),
+            'Request'
+        );
+        ok( $response->is_success, 'Response Successful 2xx' );
+        is( $response->content_type, 'text/plain', 'Response Content-Type' );
+        is( $response->header('X-Catalyst-Action'),
+            'action/local/one', 'Test Action' );
+        is(
+            $response->header('X-Test-Class'),
+            'TestApp::Controller::Action::Local',
+            'Test Class'
+        );
+        like(
+            $response->content,
+            qr~arguments => \[\s*'foo/bar'\s*\]~,
+            "Parameters don't split on %2F"
+        );
+    }
 }