Unicode plugin: import tests and update current ones
[catagits/Catalyst-Runtime.git] / t / lib / TestApp / Controller / Root.pm
index a3978d6..b626bdb 100644 (file)
@@ -1,6 +1,8 @@
 package TestApp::Controller::Root;
-
+use strict;
+use warnings;
 use base 'Catalyst::Controller';
+use utf8;
 
 __PACKAGE__->config->{namespace} = '';
 
@@ -13,15 +15,99 @@ sub zero : Path('0') {
     $c->forward('TestApp::View::Dump::Request');
 }
 
-sub localregex : LocalRegex('^localregex$') {
+sub zerobody : Local {
+    my ($self, $c) = @_;
+    $c->res->body('0');
+}
+
+sub emptybody : Local {
+    my ($self, $c) = @_;
+    $c->res->body('');
+}
+
+sub index : Private {
+    my ( $self, $c ) = @_;
+    $c->res->body('root index');
+}
+
+sub global_action : Private {
     my ( $self, $c ) = @_;
-    $c->res->header( 'X-Test-Class' => ref($self) );
-    $c->response->content_type('text/plain; charset=utf-8');
     $c->forward('TestApp::View::Dump::Request');
 }
 
-sub chain_to_self : Chained('chain_to_self') PathPart('') CaptureArgs(1) { }
+sub class_forward_test_method :Private {
+    my ( $self, $c ) = @_;
+    $c->response->headers->header( 'X-Class-Forward-Test-Method' => 1 );
+}
+
+sub loop_test : Local {
+    my ( $self, $c ) = @_;
+
+    for( 1..1001 ) {
+        $c->forward( 'class_forward_test_method' );
+    }
+}
+
+sub recursion_test : Local {
+    my ( $self, $c ) = @_;
+    no warnings 'recursion';
+    $c->forward( 'recursion_test' );
+}
+
+sub base_href_test : Local {
+    my ( $self, $c ) = @_;
+
+    my $body = <<"EndOfBody";
+<html>
+  <head>
+    <base href="http://www.example.com/">
+  </head>
+  <body>
+  </body>
+</html>
+EndOfBody
+
+    $c->response->body($body);
+}
+
+sub body_semipredicate : Local {
+    my ($self, $c) = @_;
+    $c->res->body; # Old code tests length($c->res->body), which causes the value to be built (undef), which causes the predicate
+    $c->res->status( $c->res->has_body ? 500 : 200 ); # to return the wrong thing, resulting in a 500.
+    $c->res->body('Body');
+}
+
 
-sub chain_recurse_endoint : Chained('chain_to_self') Args(0) { }
+sub test_redirect :Global {
+    my ($self, $c) = @_;
+    # Don't set content_type
+    # Don't set body
+    $c->res->redirect('/go_here');
+}
+
+sub test_redirect_uri_for :Global {
+    my ($self, $c) = @_;
+    # Don't set content_type
+    # Don't set body
+    $c->res->redirect($c->uri_for('/go_here'));
+}
+
+sub test_redirect_with_contenttype :Global {
+    my ($self, $c) = @_;
+    # set content_type but don't set body
+    $c->res->content_type('image/jpeg');
+    $c->res->redirect('/go_here');
+}
+
+sub test_redirect_with_content :Global {
+    my ($self, $c) = @_;
+    $c->res->content_type('text/plain');
+    $c->res->body('Please kind sir, I beg you to go to /go_here.');
+    $c->res->redirect('/go_here');
+}
+
+sub end : Private {
+    my ($self,$c) = @_;
+}
 
 1;