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 )