POE-Test-Helpers
view release on metacpan or search on metacpan
lib/POE/Test/Helpers/MooseRole.pm view on Meta::CPAN
use strictures 1;
package POE::Test::Helpers::MooseRole;
BEGIN {
$POE::Test::Helpers::MooseRole::VERSION = '1.11';
}
# ABSTRACT: A Moose role for POE::Test::Helpers for MooseX::POE
use Carp;
use Test::Deep qw( cmp_bag bag );
use Test::Deep::NoTest qw( eq_deeply );
use List::AllUtils qw( none );
use Test::More;
use Moose::Role;
use POE::Session; # for POE variables
use POE::Test::Helpers;
has 'object' => (
is => 'ro',
isa => 'POE::Test::Helpers',
lazy_build => 1,
handles => [ 'reached_event', 'check_all_counts' ],
);
has 'tests' => ( is => 'ro', isa => 'HashRef', required => 1 );
has 'params_type' => ( is => 'ro', isa => 'Str', default => 'ordered' );
sub _build_object {
my $self = shift;
my $object = POE::Test::Helpers->new(
run => sub {1},
tests => $self->tests,
params_type => $self->params_type,
);
}
before 'STARTALL' => sub {
my $self = shift;
my $class = ref $self;
$self->reached_event(
name => '_start',
order => 0,
);
my $count = 1;
my @subs_to_override = keys %{ $self->object->{'tests'} };
foreach my $event (@subs_to_override) {
$event eq '_start' || $event eq '_stop' and next;
Moose::Meta::Class->initialize($class)->add_before_method_modifier(
$event => sub {
my $self = $_[OBJECT];
$self->reached_event(
name => $event,
order => $count++,
params => [ @_[ ARG0 .. $#_ ] ],
);
}
);
}
};
after 'STOPALL' => sub {
my $self = shift;
my $order = $self->object->{'events_order'} ?
scalar @{ $self->object->{'events_order'} } :
0;
$self->reached_event(
name => '_stop',
order => $order,
);
$self->check_all_counts;
};
no Moose::Role;
1;
=pod
( run in 1.432 second using v1.01-cache-2.11-cpan-99c4e6809bf )