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
|
<?php
namespace Illuminate\Tests\Queue;
use Exception;
use Illuminate\Container\Container;
use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Queue\Events\JobFailed;
use Illuminate\Queue\Jobs\BeanstalkdJob;
use Mockery as m;
use Pheanstalk\Job;
use Pheanstalk\Pheanstalk;
use PHPUnit\Framework\TestCase;
use stdClass;
class QueueBeanstalkdJobTest extends TestCase
{
protected function tearDown(): void
{
m::close();
}
public function testFireProperlyCallsTheJobHandler()
{
$job = $this->getJob();
$job->getPheanstalkJob()->shouldReceive('getData')->once()->andReturn(json_encode(['job' => 'foo', 'data' => ['data']]));
$job->getContainer()->shouldReceive('make')->once()->with('foo')->andReturn($handler = m::mock(stdClass::class));
$handler->shouldReceive('fire')->once()->with($job, ['data']);
$job->fire();
}
public function testFailProperlyCallsTheJobHandler()
{
$job = $this->getJob();
$job->getPheanstalkJob()->shouldReceive('getData')->once()->andReturn(json_encode(['job' => 'foo', 'data' => ['data']]));
$job->getContainer()->shouldReceive('make')->once()->with('foo')->andReturn($handler = m::mock(BeanstalkdJobTestFailedTest::class));
$job->getPheanstalk()->shouldReceive('delete')->once()->with($job->getPheanstalkJob())->andReturnSelf();
$handler->shouldReceive('failed')->once()->with(['data'], m::type(Exception::class));
$job->getContainer()->shouldReceive('make')->once()->with(Dispatcher::class)->andReturn($events = m::mock(Dispatcher::class));
$events->shouldReceive('dispatch')->once()->with(m::type(JobFailed::class))->andReturnNull();
$job->fail(new Exception);
}
public function testDeleteRemovesTheJobFromBeanstalkd()
{
$job = $this->getJob();
$job->getPheanstalk()->shouldReceive('delete')->once()->with($job->getPheanstalkJob());
$job->delete();
}
public function testReleaseProperlyReleasesJobOntoBeanstalkd()
{
$job = $this->getJob();
$job->getPheanstalk()->shouldReceive('release')->once()->with($job->getPheanstalkJob(), Pheanstalk::DEFAULT_PRIORITY, 0);
$job->release();
}
public function testBuryProperlyBuryTheJobFromBeanstalkd()
{
$job = $this->getJob();
$job->getPheanstalk()->shouldReceive('bury')->once()->with($job->getPheanstalkJob());
$job->bury();
}
protected function getJob()
{
return new BeanstalkdJob(
m::mock(Container::class),
m::mock(Pheanstalk::class),
m::mock(Job::class),
'connection-name',
'default'
);
}
}
class BeanstalkdJobTestFailedTest
{
public function failed(array $data)
{
//
}
}
|