1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
## no critic (Moose::RequireCleanNamespace, Modules::ProhibitMultiplePackages, Moose::RequireMakeImmutable)
use strict;
use warnings;
use Test::More;
use Test::Fatal;
use Scalar::Util;
{
package Foo;
use Moose;
use MooseX::Params::Validate;
sub bar {
my ( $self, $args, $params ) = @_;
$params->{MX_PARAMS_VALIDATE_CACHE_KEY}
= Scalar::Util::refaddr($self);
return validated_hash( $args, %$params );
}
}
my $foo = Foo->new;
isa_ok( $foo, 'Foo' );
is(
exception {
$foo->bar( [ baz => 1 ], { baz => { isa => 'Int' } } );
},
undef,
'... successfully applied the parameter validation'
);
like(
exception {
$foo->bar( [ baz => [ 1, 2, 3 ] ], { baz => { isa => 'ArrayRef' } } );
},
qr/\QThe 'baz' parameter/,
'... successfully re-used the parameter validation for this instance'
);
my $foo2 = Foo->new;
isa_ok( $foo2, 'Foo' );
is(
exception {
$foo2->bar(
[ baz => [ 1, 2, 3 ] ],
{ baz => { isa => 'ArrayRef' } }
);
},
undef,
'... successfully applied the parameter validation'
);
like(
exception {
$foo2->bar( [ baz => 1 ], { baz => { isa => 'Int' } } );
},
qr/\QThe 'baz' parameter/,
'... successfully re-used the parameter validation for this instance'
);
is(
exception {
$foo->bar( [ baz => 1 ], { baz => { isa => 'Int' } } );
},
undef,
'... successfully applied the parameter validation (just checking)'
);
done_testing();
|