The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Qudo::Test;
use Test::More;
use List::Util qw/shuffle/;

my $expected_priority;
run_tests(10, sub {
    my $driver = shift;
    my $master = test_master(
        driver_class => $driver,
    );

    my $manager = $master->manager;
    $manager->can_do('Worker::Test');

    my @job_priority = (1..10);

    for my $priority (shuffle @job_priority) {
        $manager->enqueue(
            "Worker::Test",
            {
                arg      => 'arg'.$priority,
                priority => $priority,
            }
        );
    }

    for (reverse @job_priority) {
        $expected_priority = $_;
        $manager->work_once;
    }

    teardown_dbs;
});

package Worker::Test;
use base 'Qudo::Worker';
use Test::More;

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