diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..85aa267 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/vendor +.idea +composer.lock diff --git a/src/Sqs/Queue.php b/src/Sqs/Queue.php index 1ffd7e2..1eaa73d 100644 --- a/src/Sqs/Queue.php +++ b/src/Sqs/Queue.php @@ -92,6 +92,7 @@ private function modifyPayload($payload, $class) $body = json_decode($payload['Body'], true); $body = [ + 'displayName' => $class, 'job' => $class . '@handle', 'data' => isset($body['data']) ? $body['data'] : $body ]; diff --git a/tests/PlainSqs/QueueTest.php b/tests/PlainSqs/QueueTest.php index b54a228..b75c2d4 100644 --- a/tests/PlainSqs/QueueTest.php +++ b/tests/PlainSqs/QueueTest.php @@ -4,6 +4,8 @@ use Aws\Sqs\SqsClient; use Dusterio\PlainSqs\Jobs\DispatcherJob; use Dusterio\PlainSqs\Sqs\Queue; +use Illuminate\Container\Container; +use Illuminate\Contracts\Config\Repository; /** * Class QueueTest @@ -11,6 +13,61 @@ */ class QueueTest extends \PHPUnit_Framework_TestCase { + /** + * @var \PHPUnit_Framework_MockObject_MockObject|SqsClient + */ + private $sqsClientMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject|Container + */ + private $containerMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject|\Illuminate\Contracts\Config\Repository + */ + private $configMock; + + /** + * @var string + */ + private $phpVersion; + + protected function setUp() + { + parent::setUp(); + + $this->sqsClientMock = $this + ->getMockBuilder(SqsClient::class) + ->disableOriginalConstructor() + ->setMethods(['receiveMessage']) + ->getMock(); + + $this->configMock = $this + ->getMockBuilder(Repository::class) + ->setMethods(['has', 'set', 'get', 'all', 'prepend', 'push']) + ->getMock(); + + $this->containerMock = $this + ->getMockBuilder(Container::class) + ->setMethods(['version', 'offsetGet']) + ->getMock(); + + $this->containerMock + ->expects($this->any()) + ->method('offsetGet') + ->will($this->returnValue($this->configMock)); + + preg_match("#^\d.\d#", phpversion(), $match); + + $this->phpVersion = $match[0]; + + $this->containerMock + ->expects($this->any()) + ->method('version') + ->will($this->returnValue('5.8.0')); + } + /** * @test */ @@ -35,4 +92,45 @@ public function class_named_is_derived_from_queue_name() //$response = $method->invokeArgs($queue, [$job]); } -} \ No newline at end of file + + public function testSettingJobDisplayName() + { + if ($this->phpVersion < 5.6) { + $this->markTestIncomplete('Needs tests for Laravel versions < 5.4'); + } + + $this->sqsClientMock + ->expects($this->once()) + ->method('receiveMessage') + ->will($this->returnValue([ + 'Messages' => [ + json_encode([ + 'Body' => json_encode([ + 'data' => [ + 'foo' => 'bar' + ] + ]) + ]) + ] + ])); + + + $this->configMock + ->expects($this->any()) + ->method('get') + ->with('sqs-plain.handlers') + ->will($this->returnValue([ + 'default-queue' => 'SomeClass' + ])); + + $queue = new Queue($this->sqsClientMock, 'default-queue'); + + $queue->setContainer($this->containerMock); + + $queue->setConnectionName('default-connection'); + + $result = $queue->pop(); + + $this->assertEquals('SomeClass', $result->resolveName()); + } +}