X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FTestApp%2FView%2FDump.pm;h=a59e417ef90225e40818b8ab8bd69488f82ea2b0;hb=9563d3701ebb2e6a4ac4760ab84af6eb3ab7adc2;hp=ad0f546a8f4f5f4624692cd5f2662bedad30178e;hpb=66741f94ac93b7ba0989db3556d0e3fe36c1be87;p=catagits%2FCatalyst-Runtime.git diff --git a/t/lib/TestApp/View/Dump.pm b/t/lib/TestApp/View/Dump.pm index ad0f546..a59e417 100644 --- a/t/lib/TestApp/View/Dump.pm +++ b/t/lib/TestApp/View/Dump.pm @@ -1,10 +1,10 @@ package TestApp::View::Dump; use strict; -use base 'Catalyst::Base'; +use base 'Catalyst::View'; use Data::Dumper (); -use Scalar::Util qw(weaken); +use Scalar::Util qw(blessed weaken); sub dump { my ( $self, $reference ) = @_; @@ -28,25 +28,32 @@ sub process { # Force processing of on-demand data $c->prepare_body; - # Remove context from reference if needed - my $context = delete $reference->{_context}; - # Remove body from reference if needed + $reference->{__body_type} = blessed $reference->body + if (blessed $reference->{_body}); my $body = delete $reference->{_body}; + # Remove context from reference if needed + my $context = delete $reference->{_context}; + if ( my $output = - $self->dump( $reference || $c->stash->{dump} || $c->stash ) ) + $self->dump( $reference ) ) { $c->res->headers->content_type('text/plain'); $c->res->output($output); - # Repair context - $reference->{_context} = $context; - weaken( $reference->{_context} ); - - # Repair body - $reference->{_body} = $body; + if ($context) { + # Repair context + $reference->{_context} = $context; + weaken( $reference->{_context} ); + } + + if ($body) { + # Repair body + delete $reference->{__body_type}; + $reference->{_body} = $body; + } return 1; }