|
2 | 2 |
|
3 | 3 | class QueueTest extends TestCase
|
4 | 4 | {
|
5 |
| - public function testQueue() |
| 5 | + public function setUp() |
6 | 6 | {
|
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'); |
8 | 17 | $this->assertNotNull($id);
|
9 | 18 |
|
| 19 | + // Get and reserve the test job (next available) |
10 | 20 | $job = Queue::pop('test');
|
11 | 21 | $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()); |
12 | 46 | }
|
13 | 47 | }
|
0 commit comments