BPM-Engine
view release on metacpan or search on metacpan
t/04-run/02-runner.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Test::Fatal;
use t::TestUtils;
no warnings 'redefine';
sub diag {}
use warnings;
my $DEBUG = 0;
#- interface
use_ok('BPM::Engine::ProcessRunner');
can_ok('BPM::Engine::ProcessRunner', qw/
start_process
complete_process
start_activity
continue_activity
complete_activity
/);
#- constructor
{
package MyTrait;
use Moose::Role;
has 'stuff' => ( is => 'rw' );
sub do_stuff {}
}
my $pr;
like(exception { $pr = BPM::Engine::ProcessRunner->new() }, qr/Attribute \(process_instance\) is required/);
like(exception { $pr = BPM::Engine::ProcessRunner->with_traits(qw/+MyTrait/)->new() }, qr/Attribute \(process_instance\) is required/, 'Invalid arguments');
like(exception { $pr = BPM::Engine::ProcessRunner->with_traits(qw/+MyTrait/)->new({ process_instance => {} }) }, qr/Attribute \(process_instance\) does not pass the type constraint/, 'Invalid arguments');
#ok($pr = BPM::Engine::ProcessRunner->new_with_traits(traits => ['+MyTrait']));
#ok($pr->can('stuff'));
use_ok('BPM::Engine');
my $engine = BPM::Engine->new(
log_dispatch_conf => {
class => 'Log::Dispatch::Screen',
min_level => $DEBUG ? 'debug' : 'warning',
stderr => 1,
format => '[%p] %m at %F line %L%n',
},
schema => schema(),
callback => sub {
my($runner, $entity, $event, $node, $instance) = @_;
# return 1 if ($entity eq 'activity' || $event ne 'execute');
my $act = $entity eq 'process' ? $node->process_uid :
($entity eq 'transition' ? $node->transition_uid : $instance->activity->activity_uid);
#diag "$event $entity $act"; # unless $entity eq 'task';
#return 0 if (($entity eq 'route' || $entity eq 'task') && $event eq 'execute'); # halts execution
return 0 if ($entity eq 'activity' && $event eq 'execute'); # halts execution
return 1;
},
);
my ($runner, $process, $pi) = ();
$engine->create_package('./t/var/02-branching.xpdl');
( run in 1.725 second using v1.01-cache-2.11-cpan-54e63673c56 )