Skip to content

Commit 0a6531e

Browse files
committed
Add queue tests
1 parent b9a353d commit 0a6531e

File tree

2 files changed

+59
-2
lines changed

2 files changed

+59
-2
lines changed

tests/QueueTest.php

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,46 @@
22

33
class QueueTest extends TestCase
44
{
5-
public function testQueue()
5+
public function setUp()
66
{
7-
$id = Queue::push('test', ['foo' => 'bar'], 'test');
7+
parent::setUp();
8+
9+
// Always start with a clean slate
10+
Queue::getDatabase()->table(Config::get('queue.connections.database.table'))->truncate();
11+
Queue::getDatabase()->table(Config::get('queue.failed.table'))->truncate();
12+
}
13+
14+
public function testQueueJobLifeCycle()
15+
{
16+
$id = Queue::push('test', ['action' => 'QueueJobLifeCycle'], 'test');
817
$this->assertNotNull($id);
918

19+
// Get and reserve the test job (next available)
1020
$job = Queue::pop('test');
1121
$this->assertInstanceOf('Illuminate\Queue\Jobs\DatabaseJob', $job);
22+
$this->assertEquals(1, $job->getDatabaseJob()->reserved);
23+
$this->assertEquals(json_encode(['job' => 'test', 'data' => ['action' => 'QueueJobLifeCycle']]), $job->getRawBody());
24+
25+
// Remove reserved job
26+
$job->delete();
27+
$this->assertEquals(0, Queue::getDatabase()->table(Config::get('queue.connections.database.table'))->count());
28+
}
29+
30+
public function testQueueJobExpired()
31+
{
32+
$id = Queue::push('test', ['action' => 'QueueJobExpired'], 'test');
33+
$this->assertNotNull($id);
34+
35+
// Expire the test job
36+
$expiry = \Carbon\Carbon::now()->subSeconds(Config::get('queue.connections.database.expire'))->getTimestamp();
37+
Queue::getDatabase()->table(Config::get('queue.connections.database.table'))->where('_id', $id)->update(['reserved' => 1, 'reserved_at' => $expiry]);
38+
39+
// Expect an attempted older job in the queue
40+
$job = Queue::pop('test');
41+
$this->assertEquals(2, $job->getDatabaseJob()->attempts);
42+
$this->assertGreaterThan($expiry, $job->getDatabaseJob()->reserved_at);
43+
44+
$job->delete();
45+
$this->assertEquals(0, Queue::getDatabase()->table(Config::get('queue.connections.database.table'))->count());
1246
}
1347
}

tests/config/queue.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
return [
4+
5+
'default' => 'database',
6+
7+
'connections' => [
8+
9+
'database' => [
10+
'driver' => 'mongodb',
11+
'table' => 'jobs',
12+
'queue' => 'default',
13+
'expire' => 60,
14+
],
15+
16+
],
17+
18+
'failed' => [
19+
'database' => 'mongodb',
20+
'table' => 'failed_jobs',
21+
],
22+
23+
];

0 commit comments

Comments
 (0)