copied from svn
[gitmo/MooseX-Params-Validate.git] / t / 004_custom_cache_key.t
CommitLineData
d9d1529d 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More tests => 7;
7use Test::Exception;
8use Scalar::Util;
9
10{
11 package Foo;
12 use Moose;
13 use MooseX::Params::Validate;
14
15 sub bar {
16 my ( $self, $args, $params ) = @_;
17 $params->{MX_PARAMS_VALIDATE_CACHE_KEY}
18 = Scalar::Util::refaddr($self);
19 return validated_hash( $args, %$params );
20 }
21}
22
23my $foo = Foo->new;
24isa_ok( $foo, 'Foo' );
25
26lives_ok {
27 $foo->bar( [ baz => 1 ], { baz => { isa => 'Int' } } );
28}
29'... successfully applied the parameter validation';
30
31throws_ok {
32 $foo->bar( [ baz => [ 1, 2, 3 ] ], { baz => { isa => 'ArrayRef' } } );
33} qr/\QThe 'baz' parameter/,
34'... successfully re-used the parameter validation for this instance';
35
36my $foo2 = Foo->new;
37isa_ok( $foo2, 'Foo' );
38
39lives_ok {
40 $foo2->bar( [ baz => [ 1, 2, 3 ] ], { baz => { isa => 'ArrayRef' } } );
41}
42'... successfully applied the parameter validation';
43
44throws_ok {
45 $foo2->bar( [ baz => 1 ], { baz => { isa => 'Int' } } );
46} qr/\QThe 'baz' parameter/,
47'... successfully re-used the parameter validation for this instance';
48
49lives_ok {
50 $foo->bar( [ baz => 1 ], { baz => { isa => 'Int' } } );
51}
52'... successfully applied the parameter validation (just checking)';
53