Dancer2

 view release on metacpan or  search on metacpan

t/issues/gh-1098.t  view on Meta::CPAN

use Test::More tests => 3;
use Test::Fatal;

use Dancer2::Core::Error;
use Dancer2::Core::Response;
use Dancer2::Serializer::JSON;
use HTTP::Headers;
use HTTP::Headers::Fast;
use JSON::MaybeXS;

subtest 'Core::Error serializer isa tests' => sub {
    plan tests => 5;

    is exception { Dancer2::Core::Error->new }, undef, "Error->new lived";

    like exception { Dancer2::Core::Error->new(show_stacktrace => []) },
    qr/Reference \Q[]\E did not pass type constraint "Bool"/i,
      "Error->new(show_stacktrace => []) died";

    is exception {
        Dancer2::Core::Error->new(serializer => undef)
    },
    undef,
    "Error->new(serializer => undef) lived";

    is exception {
        Dancer2::Core::Error->new(serializer => Dancer2::Serializer::JSON->new)
    },
    undef,
    "Error->new(serializer => Dancer2::Serializer::JSON->new) lived";

    like exception { Dancer2::Core::Error->new(serializer => JSON->new) }, qr/
    (
    requires\sthat\sthe\sreference\sdoes\sDancer2::Core::Role::Serializer
    |
    did\snot\spass\stype\sconstraint
    )
    /x, "Error->new(serializer => JSON->new) died";
};

subtest 'Core::Response headers isa tests' => sub {
    plan tests => 5;

    is exception { Dancer2::Core::Response->new },
    undef, "Response->new lived";

    is exception {
        Dancer2::Core::Response->new(headers => [Header => 'Content'])
    },
    undef,
    "Response->new( headers => [ Header => 'Content' ] ) lived";

    is exception {
        Dancer2::Core::Response->new(headers => HTTP::Headers->new)
    },
    undef,
    "Response->new( headers => HTTP::Headers->new ) lived";

    is exception {
        Dancer2::Core::Response->new(headers => HTTP::Headers::Fast->new)
    },
    undef,



( run in 1.769 second using v1.01-cache-2.11-cpan-54e63673c56 )