my
$class
=
'CPAN::Audit::Filter'
;
my
@class_methods
=
qw(new)
;
my
@instance_methods
=
qw(excludes ignored_count)
;
subtest
sanity
=>
sub
{
use_ok(
$class
);
can_ok(
$class
,
@class_methods
);
};
subtest
'no args'
=>
sub
{
my
$filter
=
$class
->new;
isa_ok(
$filter
,
$class
);
can_ok(
$filter
,
@instance_methods
);
};
subtest
'one args'
=>
sub
{
my
$warning
;
local
$SIG
{__WARN__} =
sub
{
$warning
.=
$_
[0] };
my
$filter
=
$class
->new(
'excludes'
);
like(
$warning
,
qr/Odd number/
,
'Odd number of elements warns'
);
isa_ok(
$filter
,
$class
);
can_ok(
$filter
,
@instance_methods
);
};
subtest
'two args'
=>
sub
{
my
$id
=
'Some-Package-2022-001'
;
my
$filter
=
$class
->new(
exclude
=> [
$id
] );
isa_ok(
$filter
,
$class
);
can_ok(
$filter
,
@instance_methods
);
subtest
'nothing to ignore'
=>
sub
{
my
$rc
=
$filter
->excludes( {
id
=>
'xyz'
} );
ok( !
$rc
,
'excludes returns false when it does not exclude'
);
is(
$filter
->ignored_count, 0,
'ignored_count returns 0 when it does not exclude'
);
};
subtest
'something to ignore'
=>
sub
{
my
$rc
=
$filter
->excludes( {
id
=>
$id
} );
ok(
$rc
,
'excludes returns true when it does exclude'
);
is(
$filter
->ignored_count, 1,
'ignored_count returns 1 when it does exclude'
);
};
};
done_testing();