fix Test::More prereq for done_testing
[catagits/Catalyst-Plugin-Session-State-Stash.git] / t / 04-basic.t
CommitLineData
643399c7 1#!/usr/bin/perl
642b19cf 2
3use strict;
4use warnings;
5
c93f6ff7 6use Test::More 0.88;
bcebcbb7 7use Class::MOP;
8use Class::MOP::Class;
9
10use_ok("Catalyst::Plugin::Session::State::Stash" );
11use_ok("Catalyst::Plugin::Session");
643399c7 12
bcebcbb7 13my $ctx_meta = Class::MOP::Class->create_anon_class(
14 superclasses => [qw/
15 Catalyst::Plugin::Session::State::Stash
16 Catalyst::Plugin::Session
17 /],
18);
642b19cf 19
bcebcbb7 20$ctx_meta->add_attribute( $_, reader => $_, default => sub { {} } )
21 for qw/config session stash/;;
22$ctx_meta->add_method("debug" => sub { 0 });
642b19cf 23
24my $sessionid;
bcebcbb7 25$ctx_meta->add_method( sessionid => sub { shift; $sessionid = shift if @_; $sessionid } );
642b19cf 26
bcebcbb7 27$ctx_meta->make_immutable( replace_constructor => 1 );
28my $app = $ctx_meta->name->new;
642b19cf 29
bcebcbb7 30isa_ok($app, 'Catalyst::Plugin::Session::State::Stash');
31isa_ok($app, 'Catalyst::Plugin::Session');
642b19cf 32
bcebcbb7 33can_ok( $app, 'config');
34can_ok( $app, "setup_session" );
35can_ok( $app, '_session_plugin_config');
36
37$app->setup_session;
38
39is( $app->config->{'Plugin::Session'}{stash_key},
642b19cf 40 '_session', "default cookie name is set" );
41
bcebcbb7 42can_ok( $app, "get_session_id" );
642b19cf 43
bcebcbb7 44ok( !$app->get_session_id, "no session id yet");
642b19cf 45
bcebcbb7 46$app->stash->{ '_session' } = {id => 1};
47$app->stash->{'session_id'} = {id => 2};
48$app->stash->{'other_thing'} = { id => 3 };
642b19cf 49
bcebcbb7 50is( $app->get_session_id, "1", "Pull newfound session id" );
642b19cf 51
bcebcbb7 52$app->config->{'Plugin::Session'}{stash_key} = "session_id";
642b19cf 53
bcebcbb7 54is( $app->get_session_id, "2", "Pull session id from second key" );
642b19cf 55
bcebcbb7 56can_ok( $app, "set_session_id" );
effd6244 57
58# Check forwards config compatibility..
bcebcbb7 59$app->config->{'Plugin::Session'} = {};
60$app->setup_session;
effd6244 61
bcebcbb7 62is( $app->config->{'Plugin::Session'}{stash_key},
effd6244 63 '_session', "default cookie name is set when new stash key used" );
64
bcebcbb7 65$app->config->{'Plugin::Session'}{stash_key} = "other_thing";
66
67is( $app->get_session_id, "3", "Pull session id from key in new config" );
68
69done_testing;
effd6244 70