QueueBeanstalkdJobTest.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace Illuminate\Tests\Queue;
  3. use Exception;
  4. use Illuminate\Container\Container;
  5. use Illuminate\Contracts\Events\Dispatcher;
  6. use Illuminate\Queue\Events\JobFailed;
  7. use Illuminate\Queue\Jobs\BeanstalkdJob;
  8. use Mockery as m;
  9. use Pheanstalk\Job;
  10. use Pheanstalk\Pheanstalk;
  11. use PHPUnit\Framework\TestCase;
  12. use stdClass;
  13. class QueueBeanstalkdJobTest extends TestCase
  14. {
  15. protected function tearDown(): void
  16. {
  17. m::close();
  18. }
  19. public function testFireProperlyCallsTheJobHandler()
  20. {
  21. $job = $this->getJob();
  22. $job->getPheanstalkJob()->shouldReceive('getData')->once()->andReturn(json_encode(['job' => 'foo', 'data' => ['data']]));
  23. $job->getContainer()->shouldReceive('make')->once()->with('foo')->andReturn($handler = m::mock(stdClass::class));
  24. $handler->shouldReceive('fire')->once()->with($job, ['data']);
  25. $job->fire();
  26. }
  27. public function testFailProperlyCallsTheJobHandler()
  28. {
  29. $job = $this->getJob();
  30. $job->getPheanstalkJob()->shouldReceive('getData')->once()->andReturn(json_encode(['job' => 'foo', 'uuid' => 'test-uuid', 'data' => ['data']]));
  31. $job->getContainer()->shouldReceive('make')->once()->with('foo')->andReturn($handler = m::mock(BeanstalkdJobTestFailedTest::class));
  32. $job->getPheanstalk()->shouldReceive('delete')->once()->with($job->getPheanstalkJob())->andReturnSelf();
  33. $handler->shouldReceive('failed')->once()->with(['data'], m::type(Exception::class), 'test-uuid');
  34. $job->getContainer()->shouldReceive('make')->once()->with(Dispatcher::class)->andReturn($events = m::mock(Dispatcher::class));
  35. $events->shouldReceive('dispatch')->once()->with(m::type(JobFailed::class))->andReturnNull();
  36. $job->fail(new Exception);
  37. }
  38. public function testDeleteRemovesTheJobFromBeanstalkd()
  39. {
  40. $job = $this->getJob();
  41. $job->getPheanstalk()->shouldReceive('delete')->once()->with($job->getPheanstalkJob());
  42. $job->delete();
  43. }
  44. public function testReleaseProperlyReleasesJobOntoBeanstalkd()
  45. {
  46. $job = $this->getJob();
  47. $job->getPheanstalk()->shouldReceive('release')->once()->with($job->getPheanstalkJob(), Pheanstalk::DEFAULT_PRIORITY, 0);
  48. $job->release();
  49. }
  50. public function testBuryProperlyBuryTheJobFromBeanstalkd()
  51. {
  52. $job = $this->getJob();
  53. $job->getPheanstalk()->shouldReceive('bury')->once()->with($job->getPheanstalkJob());
  54. $job->bury();
  55. }
  56. protected function getJob()
  57. {
  58. return new BeanstalkdJob(
  59. m::mock(Container::class),
  60. m::mock(Pheanstalk::class),
  61. m::mock(Job::class),
  62. 'connection-name',
  63. 'default'
  64. );
  65. }
  66. }
  67. class BeanstalkdJobTestFailedTest
  68. {
  69. public function failed(array $data)
  70. {
  71. //
  72. }
  73. }