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