Dancer2

 view release on metacpan or  search on metacpan

t/cookie.t  view on Meta::CPAN

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 )