109 lines
2.1 KiB
Perl
109 lines
2.1 KiB
Perl
package WebGUI::Test::Activity;
|
|
|
|
use WebGUI::Workflow;
|
|
use WebGUI::Test;
|
|
|
|
=head Name
|
|
|
|
package WebGUI::Test::Activity;
|
|
|
|
=head Description
|
|
|
|
This package encapsulates the code required to run
|
|
an activity.
|
|
|
|
=head Usage
|
|
|
|
use WebGUI::Test::Activity;
|
|
|
|
my $instance = WebGUI::Test::Activity->create( $session, 'WebGUI::Workflow::Activity::RemoveOldCarts', {
|
|
cartTimeout => 3600,
|
|
} );
|
|
|
|
is( $instance->run, 'complete', 'activity complete' );
|
|
is( $instance->run, 'done', 'activity done' );
|
|
$instance->reset;
|
|
is( $instance->run, 'complete', 'activity complete' );
|
|
is( $instance->run, 'done', 'activity done' );
|
|
$instance->delete;
|
|
|
|
=head methods
|
|
|
|
=head2 create
|
|
|
|
=params
|
|
|
|
session -- the session variable
|
|
|
|
class -- the class for the activity to run
|
|
|
|
params -- params to set in the workflow
|
|
|
|
=cut
|
|
|
|
sub create {
|
|
my $myClass = shift;
|
|
my $session = shift;
|
|
my $activityClass = shift;
|
|
my $activityParams;
|
|
if( exists $_[0] and ref $_[0] eq 'HASH' ) {
|
|
$activityParams = shift ;
|
|
} else {
|
|
$activityParams = { @_ };
|
|
}
|
|
my $workflow = WebGUI::Workflow->create($session,
|
|
{
|
|
enabled => 1,
|
|
objectType => $activityParams->{objectType} || 'None',
|
|
mode => 'realtime',
|
|
},
|
|
);
|
|
delete $activityParams->{objectType};
|
|
my $activity = $workflow->addActivity($activityClass);
|
|
if( scalar( keys %$activityParams ) > 0 ) {
|
|
$activity->set(%$activityParams);
|
|
}
|
|
|
|
my $instance = WebGUI::Workflow::Instance->create($session,
|
|
{
|
|
workflowId => $workflow->getId,
|
|
skipSpectreNotification => 1,
|
|
}
|
|
);
|
|
|
|
addToCleanup($workflow);
|
|
|
|
return bless { instance => $instance,
|
|
session => $session,
|
|
workflow => $workflow }, __PACKAGE__;
|
|
}
|
|
|
|
=head2 run
|
|
|
|
calls run on the instance of the workflow
|
|
|
|
=cut
|
|
|
|
sub run {
|
|
return $_[0]{instance}->run;
|
|
}
|
|
|
|
=head2 reset
|
|
|
|
creates a new instance of the workflow so that it can be re-run
|
|
|
|
=cut
|
|
|
|
sub reset {
|
|
my $self = shift;
|
|
my $session = $self->{session};
|
|
$self->{instance} = WebGUI::Workflow::Instance->create($session,
|
|
{
|
|
workflowId => $self->{workflow}->getId,
|
|
skipSpectreNotification => 1,
|
|
}
|
|
);
|
|
}
|
|
|
|
1;
|
|
|