'text/x-php-serialization' =>
[ 'Data::Serializer', 'PHP::Serialization' ],
'text/view' => [ 'View', 'Simple' ],
+ 'text/explodingview' => [ 'View', 'Awful' ],
'text/broken' => 'Broken',
},
);
--- /dev/null
+package Test::Serialize::View::Awful;
+
+use base Catalyst::View;
+
+sub render {
+ my ($self, $c, $template) = @_;
+ die "I don't know how to do that!";
+}
+
+sub process {
+ my ($self, $c) = @_;
+
+ my $output = eval {
+ $self->render($c, "blah");
+ };
+
+ if ($@) {
+ my $error = qq/Couldn't render template. Error: "$@"/;
+ $c->error($error);
+ return 0;
+ }
+
+ $c->res->body($output);
+ return 1;
+}
+
+1;
use strict;
use warnings;
-use Test::More tests => 4;
+use Test::More tests => 6;
use FindBin;
use lib ( "$FindBin::Bin/lib", "$FindBin::Bin/../lib" );
my $mres_post = request( $t->post( url => '/monkey_put', data => 1 ) );
ok( $mres_post->is_success, "POST to the monkey passed." );
+my $t2 = Test::Rest->new( 'content_type' => 'text/explodingview' );
+my $res = request( $t2->get( url => '/monkey_get' ) );
+
+ok (! $res->is_success, 'View errors result in failure');
+like( $res->content, qr/don't know how/, 'The error looks okay');
+
1;