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
|
<?php
namespace Illuminate\Tests\Queue;
use Illuminate\Container\Container;
use Illuminate\Queue\BeanstalkdQueue;
use Illuminate\Queue\Jobs\BeanstalkdJob;
use Mockery as m;
use Pheanstalk\Job;
use Pheanstalk\Pheanstalk;
use PHPUnit\Framework\TestCase;
class QueueBeanstalkdQueueTest extends TestCase
{
protected function tearDown(): void
{
m::close();
}
public function testPushProperlyPushesJobOntoBeanstalkd()
{
$queue = new BeanstalkdQueue(m::mock(Pheanstalk::class), 'default', 60);
$pheanstalk = $queue->getPheanstalk();
$pheanstalk->shouldReceive('useTube')->once()->with('stack')->andReturn($pheanstalk);
$pheanstalk->shouldReceive('useTube')->once()->with('default')->andReturn($pheanstalk);
$pheanstalk->shouldReceive('put')->twice()->with(json_encode(['displayName' => 'foo', 'job' => 'foo', 'maxTries' => null, 'delay' => null, 'timeout' => null, 'data' => ['data']]), 1024, 0, 60);
$queue->push('foo', ['data'], 'stack');
$queue->push('foo', ['data']);
}
public function testDelayedPushProperlyPushesJobOntoBeanstalkd()
{
$queue = new BeanstalkdQueue(m::mock(Pheanstalk::class), 'default', 60);
$pheanstalk = $queue->getPheanstalk();
$pheanstalk->shouldReceive('useTube')->once()->with('stack')->andReturn($pheanstalk);
$pheanstalk->shouldReceive('useTube')->once()->with('default')->andReturn($pheanstalk);
$pheanstalk->shouldReceive('put')->twice()->with(json_encode(['displayName' => 'foo', 'job' => 'foo', 'maxTries' => null, 'delay' => null, 'timeout' => null, 'data' => ['data']]), Pheanstalk::DEFAULT_PRIORITY, 5, Pheanstalk::DEFAULT_TTR);
$queue->later(5, 'foo', ['data'], 'stack');
$queue->later(5, 'foo', ['data']);
}
public function testPopProperlyPopsJobOffOfBeanstalkd()
{
$queue = new BeanstalkdQueue(m::mock(Pheanstalk::class), 'default', 60);
$queue->setContainer(m::mock(Container::class));
$pheanstalk = $queue->getPheanstalk();
$pheanstalk->shouldReceive('watchOnly')->once()->with('default')->andReturn($pheanstalk);
$job = m::mock(Job::class);
$pheanstalk->shouldReceive('reserveWithTimeout')->once()->with(0)->andReturn($job);
$result = $queue->pop();
$this->assertInstanceOf(BeanstalkdJob::class, $result);
}
public function testBlockingPopProperlyPopsJobOffOfBeanstalkd()
{
$queue = new BeanstalkdQueue(m::mock(Pheanstalk::class), 'default', 60, 60);
$queue->setContainer(m::mock(Container::class));
$pheanstalk = $queue->getPheanstalk();
$pheanstalk->shouldReceive('watchOnly')->once()->with('default')->andReturn($pheanstalk);
$job = m::mock(Job::class);
$pheanstalk->shouldReceive('reserveWithTimeout')->once()->with(60)->andReturn($job);
$result = $queue->pop();
$this->assertInstanceOf(BeanstalkdJob::class, $result);
}
public function testDeleteProperlyRemoveJobsOffBeanstalkd()
{
$queue = new BeanstalkdQueue(m::mock(Pheanstalk::class), 'default', 60);
$pheanstalk = $queue->getPheanstalk();
$pheanstalk->shouldReceive('useTube')->once()->with('default')->andReturn($pheanstalk);
$pheanstalk->shouldReceive('delete')->once()->with(m::type(Job::class));
$queue->deleteMessage('default', 1);
}
}
|