webgui/t/lib/WebGUI/Test/Activity.pm
2009-10-31 09:41:56 -05:00

105 lines
2.1 KiB
Perl

package WebGUI::Test::Activity;
use WebGUI::Workflow;
=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->rerun;
is( $instance->run, 'complete', 'activity complete' );
is( $instance->run, 'done', 'activity done' );
$instance->delete;
=head 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 $workflowClass = shift;
my $activityParams;
if( exists $_[0] and ref $_[0] eq 'HASH' ) {
$activityParams = shift ;
} else {
$activityParams = { @_ };
}
my $workflow = WebGUI::Workflow->create($session,
{
enabled => 1,
objectType => 'None',
mode => 'realtime',
},
);
my $activity = $workflow->addActivity($workflowClass);
if( scalar( keys %$activityParams ) > 0 ) {
$activity->set(%$activityParams);
}
my $instance = WebGUI::Workflow::Instance->create($session,
{
workflowId => $workflow->getId,
skipSpectreNotification => 1,
}
);
my $tag = WebGUI::VersionTag->getWorking($session);
$tag->commit;
WebGUI::Test->tagsToRollback($tag);
return bless { instance => $instance,
session => $session,
workflow => $workflow }, __PACKAGE__;
}
sub run {
return $_[0]{instance}->run;
}
sub rerun {
my $self = shift;
$self->{instance}->delete;
$self->{instance} = WebGUI::Workflow::Instance->create($self->{session},
{
workflowId => $self->{workflow}->getId,
skipSpectreNotification => 1,
}
);
my $tag = WebGUI::VersionTag->getWorking($session);
$tag->commit;
WebGUI::Test->tagsToRollback($tag);
}
sub delete {
my $self = shift;
$self->{instance}->delete;
$self->{workflow}->delete;
}
1;