The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# $Id$
# -*-perl-*-

use strict;
use warnings;

require 't/lib/db-common.pl';

use TheSchwartz;
use Test::More tests => 6;

run_tests(
    2,
    sub {
        my $client = test_client( dbs => ['ts1'] );

        my $handle = $client->insert("Worker::Dummy");
        ok( $handle, "inserted job" );

        $client->can_do("Worker::Dummy");
        $client->can_do("Worker::Dummy2");
        $client->can_do("Worker::Dummy3");
        $client->work_until_done;

        ok( !$handle->is_pending, "job is done" );

        teardown_dbs('ts1');
    }
);

############################################################################
package Worker::Dummy;
use base 'TheSchwartz::Worker';

sub work {
    my ( $class, $job ) = @_;
    my $subjob = TheSchwartz::Job->new( funcname => 'Worker::Dummy2', );
    $job->replace_with($subjob);
}

sub max_retries {2}
sub retry_delay {5}

package Worker::Dummy2;
use base 'TheSchwartz::Worker';

sub work {
    my ( $class, $job ) = @_;
    $job->completed;
}

package Worker::Dummy3;
use base 'TheSchwartz::Worker';

sub work {
    my ( $class, $job ) = @_;
    $job->completed;
}