/
client.t
91 lines (65 loc) · 2.29 KB
/
client.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
use strict;
use warnings;
use t::Utils;
use Test::More;
use DBI;
use Jonk::Client;
my $dbh = t::Utils->setup;
subtest 'client / flexible job table name' => sub {
my $jonk = Jonk::Client->new($dbh);
is $jonk->{enqueue_query}, 'INSERT INTO job (func, arg, enqueue_time) VALUES (?,?,?)';
$jonk = Jonk::Client->new($dbh, +{table_name => 'jonk_job'});
is $jonk->{enqueue_query}, 'INSERT INTO jonk_job (func, arg, enqueue_time) VALUES (?,?,?)';
done_testing;
};
subtest 'enqueue' => sub {
my $jonk = Jonk::Client->new($dbh);
my $job_id = $jonk->enqueue('MyWorker', 'arg');
ok $job_id;
my $sth = $dbh->prepare('SELECT * FROM job WHERE id = ?');
$sth->execute($job_id);
my $row = $sth->fetchrow_hashref;
is $row->{arg}, 'arg';
is $row->{func}, 'MyWorker';
ok not $jonk->errstr;
done_testing;
};
subtest 'enqueue / and enqueue_time_callback' => sub {
my $time;
my $jonk = Jonk::Client->new($dbh,+{enqueue_time_callback => sub {
my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);
$time = sprintf('%04d-%02d-%02d %02d:%02d:%02d', $year + 1900, $mon + 1, $mday, $hour, $min, $sec);
}});
my $job_id = $jonk->enqueue('MyWorker', 'arg');
ok $job_id;
my $sth = $dbh->prepare('SELECT * FROM job WHERE id = ?');
$sth->execute($job_id);
my $row = $sth->fetchrow_hashref;
is $row->{arg}, 'arg';
is $row->{func}, 'MyWorker';
is $row->{enqueue_time}, $time;
done_testing;
};
subtest 'error handling' => sub {
my $jonk = Jonk::Client->new($dbh, +{table_name => 'jonk_job'});
my $job_id = $jonk->enqueue('MyWorker', 'arg');
ok not $job_id;
like $jonk->errstr, qr/can't enqueue for job queue database:/;
done_testing;
};
t::Utils->cleanup($dbh);
subtest 'enqueue / flexible job table name' => sub {
my $dbh = t::Utils->setup("my_job");
my $jonk = Jonk::Client->new($dbh, +{table_name => "my_job"});
my $job_id = $jonk->enqueue('MyWorker', 'arg');
ok $job_id;
my $sth = $dbh->prepare('SELECT * FROM my_job WHERE id = ?');
$sth->execute($job_id);
my $row = $sth->fetchrow_hashref;
is $row->{arg}, 'arg';
is $row->{func}, 'MyWorker';
ok not $jonk->errstr;
t::Utils->cleanup($dbh, "my_job");
done_testing;
};
done_testing;