$c->NEXT::setup_session();
}
+sub prepare_action {
+ my $c = shift;
+
+ if ( $c->config->{session}{flash_to_stash} and $c->_sessionid and my $flash_data = $c->flash ) {
+ @{ $c->stash }{ keys %$flash_data } = values %$flash_data;
+ }
+
+ $c->NEXT::prepare_action(@_);
+}
+
sub finalize {
my $c = shift;
use strict;
use warnings;
-use Test::More tests => 6;
+use Test::More tests => 7;
use Test::MockObject::Extends;
use Test::Exception;
$c->set_always( get_session_data => { } );
$c->set_true( "store_session_data" );
$c->set_always( _sessionid => "deadbeef");
+$c->set_always( config => { } );
+$c->set_always( stash => { } );
$c->_load_flash;
$c->_load_flash;
is_deeply( $c->flash, {}, "nothing in flash");
+
+$c->flash->{bar} = "gorch";
+
+$c->config->{session}{flash_to_stash} = 1;
+
+$c->finalize;
+$c->prepare_action;
+
+is_deeply( $c->stash, { bar => "gorch" }, "flash copied to stash" );
+