The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;

use Mango;
use Mojo::IOLoop;
use MangoX::Queue;

use Test::More;

my $mango = Mango->new($ENV{MANGO_URI} // 'mongodb://localhost:27017');
my $collection = $mango->db('test')->collection('mangox_queue_test');
eval { $collection->drop };
$collection->create;

my $queue = MangoX::Queue->new(collection => $collection);

my $id = enqueue $queue 'test';
my $job = fetch $queue;

isnt($job, undef, 'Got job from queue');
is($job->{priority}, 1, 'Priority is right');
is($job->{status}, 'Pending', 'Status is right');
is($job->{data}, 'test', 'Data is right');

$job->{data} = 'update test';

update $queue $job => sub {
    Mojo::IOLoop->stop;
    my $j = get $queue $id;
    is $j->{data}, 'update test', 'job was updated in non-blocking mode';
};
Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

done_testing;