queueRepository = $this->createMock(QueueRepository::class); $this->model = new CheckIsAvailableMessagesInQueue( $this->queueRepository ); } public function testExecuteNotCountableAndNotEmptyQueue(): void { $connectionName = 'test'; $queueName = 'test'; $queue = $this->getMockForAbstractClass(QueueInterface::class); $message = $this->getMockForAbstractClass(EnvelopeInterface::class); $this->queueRepository->expects($this->once()) ->method('get') ->with($connectionName, $queueName) ->willReturn($queue); $queue->expects($this->once()) ->method('dequeue') ->willReturn($message); $queue->expects($this->once()) ->method('reject') ->willReturn($message); $this->assertTrue($this->model->execute($connectionName, $queueName)); } public function testExecuteNotCountableAndEmptyQueue(): void { $connectionName = 'test'; $queueName = 'test'; $queue = $this->getMockForAbstractClass(QueueInterface::class); $this->queueRepository->expects($this->once()) ->method('get') ->with($connectionName, $queueName) ->willReturn($queue); $queue->expects($this->once()) ->method('dequeue') ->willReturn(null); $this->assertFalse($this->model->execute($connectionName, $queueName)); } public function testExecuteCountableAndNotEmptyQueue(): void { $connectionName = 'test'; $queueName = 'test'; $queue = $this->getMockForAbstractClass(CountableQueueInterface::class); $this->queueRepository->expects($this->once()) ->method('get') ->with($connectionName, $queueName) ->willReturn($queue); $queue->expects($this->once()) ->method('count') ->willReturn(1); $queue->expects($this->never()) ->method('dequeue'); $this->assertTrue($this->model->execute($connectionName, $queueName)); } public function testExecuteCountableAndEmptyQueue(): void { $connectionName = 'test'; $queueName = 'test'; $queue = $this->getMockForAbstractClass(CountableQueueInterface::class); $this->queueRepository->expects($this->once()) ->method('get') ->with($connectionName, $queueName) ->willReturn($queue); $queue->expects($this->once()) ->method('count') ->willReturn(0); $queue->expects($this->never()) ->method('dequeue'); $this->assertFalse($this->model->execute($connectionName, $queueName)); } }