Move the test actions to their own controller file to silence warning about
[catagits/Catalyst-View-TT.git] / t / lib / TestApp / Controller / Root.pm
diff --git a/t/lib/TestApp/Controller/Root.pm b/t/lib/TestApp/Controller/Root.pm
new file mode 100644 (file)
index 0000000..e119a1b
--- /dev/null
@@ -0,0 +1,65 @@
+package TestApp::Controller::Root;
+use base 'Catalyst::Controller';
+__PACKAGE__->config(namespace => '');
+
+sub default : Private {
+    my ($self, $c) = @_;
+
+    $c->response->redirect($c->uri_for('test'));
+}
+
+sub test : Local {
+    my ($self, $c) = @_;
+
+    $c->stash->{message} = ($c->request->param('message') || $c->config->{default_message});
+}
+
+sub test_includepath : Local {
+    my ($self, $c) = @_;
+    $c->stash->{message} = ($c->request->param('message') || $c->config->{default_message});
+    $c->stash->{template} = $c->request->param('template');
+    if ( $c->request->param('additionalpath') ){
+        my $additionalpath = Path::Class::dir($c->config->{root}, $c->request->param('additionalpath'));
+        $c->stash->{additional_template_paths} = ["$additionalpath"];
+    }
+    if ( $c->request->param('addpath') ){
+        my $additionalpath = Path::Class::dir($c->config->{root}, $c->request->param('addpath'));
+        my $view = 'TestApp::View::TT::' . ($c->request->param('view') || $c->config->{default_view});
+        no strict "refs";
+        push @{$view . '::include_path'}, "$additionalpath";
+        use strict;
+    }
+}
+
+sub test_render : Local {
+    my ($self, $c) = @_;
+
+    my $out = $c->stash->{message} = $c->view('TT::Appconfig')->render($c, $c->req->param('template'), {param => $c->req->param('param') || ''});
+    if (UNIVERSAL::isa($out, 'Template::Exception')) {
+        $c->response->body($out);
+        $c->response->status(403);
+    } else {
+        $c->stash->{template} = 'test.tt';
+    }
+
+}
+
+sub test_msg : Local {
+    my ($self, $c) = @_;
+    my $tmpl = $c->req->param('msg');
+    
+    $c->stash->{message} = $c->view('TT::AppConfig')->render($c, \$tmpl);
+    $c->stash->{template} = 'test.tt';
+}
+
+sub end : Private {
+    my ($self, $c) = @_;
+
+    return 1 if $c->response->status =~ /^3\d\d$/;
+    return 1 if $c->response->body;
+
+    my $view = 'View::TT::' . ($c->request->param('view') || $c->config->{default_view});
+    $c->forward($view);
+}
+
+1;