protected function setUp()
 {
     $this->logger = $this->getMockBuilder(LoggerInterface::class)->setMethods(['info', 'warning'])->getMockForAbstractClass();
     $this->connection = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->setMethods(['isServiceListening'])->getMock();
     $this->pheanstalk = $this->getMockBuilder(PheanstalkInterface::class)->setMethods(['getConnection'])->getMockForAbstractClass();
     $this->pheanstalk->expects($this->any())->method('getConnection')->will($this->returnValue($this->connection));
 }
 public function testDone()
 {
     $jobId = 12345;
     $this->pheanstalkMock->expects($this->once())->method('delete')->with($this->callback(function (Job $job) use($jobId) {
         return $job->getId() === $jobId;
     }));
     $this->pheanstalkMock->expects($this->any())->method('peek')->with($jobId)->willReturn(new Job($jobId, 'asdf'));
     $this->loggerMock->expects($this->once())->method('info')->with('Done job (12345): asdf');
     $this->sut->done($jobId);
 }
 public function testExecuteJobAndNoMoreRetries()
 {
     $action = 'test';
     $executor = $this->getMockForAbstractClass(ExecutorInterface::class);
     $executor->expects($this->any())->method('getName')->will($this->returnValue($action));
     $this->manager->addExecutor($executor);
     $data = [];
     $job = new Job(1234, json_encode($data));
     $stats = ['tube' => $action, 'releases' => 2, 'pri' => PheanstalkInterface::DEFAULT_PRIORITY];
     $this->pheanstalk->expects($this->once())->method('statsJob')->with($job)->will($this->returnValue($stats));
     $this->pheanstalk->expects($this->once())->method('bury')->with($job);
     $executor->expects($this->once())->method('execute')->will($this->throwException(new \Exception('oh noes!')));
     $this->manager->executeJob($job);
 }