Skip to content

Commit 2ea0d42

Browse files
author
Stephen Odoardi
committed
fix(2228): restructure queue tests
1 parent 14d998b commit 2ea0d42

File tree

2 files changed

+49
-11
lines changed

2 files changed

+49
-11
lines changed

docker-compose.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ services:
1212
depends_on:
1313
- mongodb
1414
- mysql
15+
command: vendor/bin/phpunit
1516

1617
mysql:
1718
container_name: mysql

tests/QueueTest.php

Lines changed: 48 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Carbon\Carbon;
66
use Illuminate\Support\Str;
77
use Jenssegers\Mongodb\Queue\Failed\MongoFailedJobProvider;
8+
use Jenssegers\Mongodb\Queue\MongoQueue;
89

910
class QueueTest extends TestCase
1011
{
@@ -107,10 +108,11 @@ public function testIncrementAttempts(): void
107108

108109
public function testJobRelease(): void
109110
{
110-
$job_id = Queue::push('test', ['action' => 'QueueJobExpired'], 'test');
111+
$queue = 'test';
112+
$job_id = Queue::push($queue, ['action' => 'QueueJobRelease'], 'test');
111113
$this->assertNotNull($job_id);
112114

113-
$job = Queue::pop('test');
115+
$job = Queue::pop($queue);
114116
$job->release();
115117

116118
$jobs = Queue::getDatabase()
@@ -119,23 +121,58 @@ public function testJobRelease(): void
119121

120122
$this->assertCount(1, $jobs);
121123
$this->assertEquals(1, $jobs[0]['attempts']);
122-
$this->assertNotEquals($job_id, $jobs[0]['_id']);
123124
}
124125

125-
public function testQueueDeleteAndRelease(): void
126+
public function testQueueDeleteReserved(): void
126127
{
127128
$queue = 'test';
128-
$job_id = Queue::push($queue, ['action' => 'QueueJobExpired'], 'test');
129-
130-
$job = Queue::pop('test');
131-
Queue::deleteAndRelease($queue, $job, 0);
129+
$job_id = Queue::push($queue, ['action' => 'QueueDeleteReserved'], 'test');
132130

131+
Queue::deleteReserved($queue, $job_id, 0);
133132
$jobs = Queue::getDatabase()
134133
->table(Config::get('queue.connections.database.table'))
135134
->get();
136135

137-
$this->assertCount(1, $jobs);
138-
$this->assertEquals(1, $jobs[0]['attempts']);
139-
$this->assertNotEquals($job_id, $jobs[0]['_id']);
136+
$this->assertCount(0, $jobs);
137+
}
138+
139+
public function testQueueRelease(): void
140+
{
141+
Carbon::setTestNow();
142+
$queue = 'test';
143+
$delay = 123;
144+
Queue::push($queue, ['action' => 'QueueRelease'], 'test');
145+
146+
$job = Queue::pop($queue);
147+
$released_job_id = Queue::release($queue, $job->getJobRecord(), $delay);
148+
149+
$released_job = Queue::getDatabase()
150+
->table(Config::get('queue.connections.database.table'))
151+
->where('_id', $released_job_id)
152+
->first();
153+
154+
$this->assertEquals($queue, $released_job['queue']);
155+
$this->assertEquals(1, $released_job['attempts']);
156+
$this->assertNull($released_job['reserved_at']);
157+
$this->assertEquals(
158+
Carbon::now()->addRealSeconds($delay)->getTimestamp(),
159+
$released_job['available_at']
160+
);
161+
$this->assertEquals(Carbon::now()->getTimestamp(), $released_job['created_at']);
162+
$this->assertEquals($job->getRawBody(), $released_job['payload']);
163+
}
164+
165+
public function testQueueDeleteAndRelease(): void
166+
{
167+
$queue = 'test';
168+
$delay = 123;
169+
Queue::push($queue, ['action' => 'QueueDeleteAndRelease'], 'test');
170+
$job = Queue::pop($queue);
171+
172+
$mock = Mockery::mock(MongoQueue::class)->makePartial();
173+
$mock->expects('deleteReserved')->once()->with($queue, $job->getJobId());
174+
$mock->expects('release')->once()->with($queue, $job->getJobRecord(), $delay);
175+
176+
$mock->deleteAndRelease($queue, $job, $delay);
140177
}
141178
}

0 commit comments

Comments
 (0)