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;
}