Dancer2
view release on metacpan or search on metacpan
use strict;
use warnings;
use Test::Fatal;
use Test::More;
BEGIN {
# Freeze time at Tue, 15-Jun-2010 00:00:00 GMT
*CORE::GLOBAL::time = sub { return 1276560000 }
}
use Dancer2::Core::Cookie;
use Dancer2::Core::Request;
if ( Dancer2::Core::Cookie::_USE_XS ) {
subtest 'with HTTP::XSCookies' => \&all_tests;
no warnings 'redefine';
*Dancer2::Core::Cookie::to_header = \&Dancer2::Core::Cookie::pp_to_header;
}
else {
diag "If you want extra speed, install HTTP::XSCookies";
}
subtest 'w/o HTTP::XSCookies' => \&all_tests;
sub all_tests {
my $cookie = Dancer2::Core::Cookie->new( name => "foo" );
subtest "Constructor" => sub {
isa_ok $cookie => 'Dancer2::Core::Cookie';
can_ok $cookie => 'to_header';
};
subtest "Setting values" => sub {
is $cookie->value("foo") => "foo", "Can set value";
is $cookie->value => "foo", "Set value stuck";
is $cookie . "bar", "foobar", "Stringifies to desired value";
ok $cookie->value( [qw(a b c)] ), "can set multiple values";
is $cookie->value => 'a', "get first value in scalar context";
is_deeply [ $cookie->value ] => [qw(a b c)],
"get all values in list context";;
is_deeply [ $cookie->values ] => [qw(a b c)],
"values returns all values";
is scalar $cookie->values => 3,
"values returns arrayref in scalar context";
ok $cookie->value( { x => 1, y => 2 } ), "can set values with a hashref";
like $cookie->value => qr/^[xy]$/; # hashes doesn't store order...
is_deeply [ sort $cookie->value ] => [ sort ( 1, 2, 'x', 'y' ) ];
};
subtest "accessors and defaults" => sub {
is $cookie->name => 'foo', "name is as expected";
is $cookie->name("bar") => "bar", "can change name";
is $cookie->name => 'bar', "name change stuck";
ok !$cookie->domain, "no domain set by default";
is $cookie->domain("dancer.org") => "dancer.org",
"setting domain returns new value";
( run in 1.487 second using v1.01-cache-2.11-cpan-54e63673c56 )