#!/usr/bin/perl use strict; use warnings; use Test::More 'no_plan'; our %default = ( chef => "swedish", ); { package MyApp; our @ISA = qw/Catalyst::Plugin::Session::Defaults Ancestor/; use NEXT; sub config { return { session => { defaults => \%::default } } }; package Ancestor; sub initialize_session_data { return { moose => [ "elk" ] } } } use ok "Catalyst::Plugin::Session::Defaults"; can_ok("Catalyst::Plugin::Session::Defaults", "initialize_session_data"); can_ok("Catalyst::Plugin::Session::Defaults", "default_session_data"); is_deeply( MyApp->default_session_data, \%default, "default comes from config" ); is( MyApp->initialize_session_data->{chef}, "swedish", "default values" ); is( (my $prev = MyApp->initialize_session_data)->{moose}[0], "elk", "merged with existing ones" ); $default{moose}[0] = "cute"; is( MyApp->initialize_session_data->{moose}[0], "cute", "overrides work" ); is( $prev->{moose}[0], "elk", "The data is cloned, not shared" );