Skip to content

Commit a7f444a

Browse files
authored
Merge pull request #100 from php-enqueue/bundle-auto-register-reply-exntesion
[bundle] Auto register reply extension.
2 parents 9f2b91d + 2e77d86 commit a7f444a

File tree

8 files changed

+87
-0
lines changed

8 files changed

+87
-0
lines changed

docs/bundle/config_reference.md

+4
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,14 @@ enqueue:
162162
default_processor_queue: default
163163
redelivered_delay_time: 0
164164
job: false
165+
async_events:
166+
enabled: false
167+
spool_producer: false
165168
extensions:
166169
doctrine_ping_connection_extension: false
167170
doctrine_clear_identity_map_extension: false
168171
signal_extension: true
172+
reply_extension: true
169173
```
170174
171175
[back to index](../index.md)

pkg/enqueue-bundle/DependencyInjection/Configuration.php

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public function getConfigTreeBuilder()
6161
->booleanNode('doctrine_ping_connection_extension')->defaultFalse()->end()
6262
->booleanNode('doctrine_clear_identity_map_extension')->defaultFalse()->end()
6363
->booleanNode('signal_extension')->defaultValue(function_exists('pcntl_signal_dispatch'))->end()
64+
->booleanNode('reply_extension')->defaultTrue()->end()
6465
->end()->end()
6566
;
6667

pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php

+4
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@ public function load(array $configs, ContainerBuilder $container)
134134
if ($config['extensions']['signal_extension']) {
135135
$loader->load('extensions/signal_extension.yml');
136136
}
137+
138+
if ($config['extensions']['reply_extension']) {
139+
$loader->load('extensions/reply_extension.yml');
140+
}
137141
}
138142

139143
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
services:
2+
enqueue.consumption.reply_extension:
3+
class: 'Enqueue\Consumption\Extension\ReplyExtension'
4+
public: false
5+
tags:
6+
- { name: 'enqueue.consumption.extension' }

pkg/enqueue-bundle/Tests/Unit/DependencyInjection/ConfigurationTest.php

+35
Original file line numberDiff line numberDiff line change
@@ -341,4 +341,39 @@ public function testSignalExtensionCouldBeDisabled()
341341
],
342342
], $config);
343343
}
344+
345+
public function testReplyExtensionShouldBeEnabledByDefault()
346+
{
347+
$configuration = new Configuration([]);
348+
349+
$processor = new Processor();
350+
$config = $processor->processConfiguration($configuration, [[
351+
'transport' => [],
352+
]]);
353+
354+
$this->assertArraySubset([
355+
'extensions' => [
356+
'reply_extension' => true,
357+
],
358+
], $config);
359+
}
360+
361+
public function testReplyExtensionCouldBeDisabled()
362+
{
363+
$configuration = new Configuration([]);
364+
365+
$processor = new Processor();
366+
$config = $processor->processConfiguration($configuration, [[
367+
'transport' => [],
368+
'extensions' => [
369+
'reply_extension' => false,
370+
],
371+
]]);
372+
373+
$this->assertArraySubset([
374+
'extensions' => [
375+
'reply_extension' => false,
376+
],
377+
], $config);
378+
}
344379
}

pkg/enqueue-bundle/Tests/Unit/DependencyInjection/EnqueueExtensionTest.php

+34
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,40 @@ public function testShouldNotLoadSignalExtensionServiceIfDisabled()
449449
self::assertFalse($container->hasDefinition('enqueue.consumption.signal_extension'));
450450
}
451451

452+
public function testShouldLoadReplyExtensionServiceIfEnabled()
453+
{
454+
$container = new ContainerBuilder();
455+
$container->setParameter('kernel.debug', true);
456+
457+
$extension = new EnqueueExtension();
458+
459+
$extension->load([[
460+
'transport' => [],
461+
'extensions' => [
462+
'reply_extension' => true,
463+
],
464+
]], $container);
465+
466+
self::assertTrue($container->hasDefinition('enqueue.consumption.reply_extension'));
467+
}
468+
469+
public function testShouldNotLoadReplyExtensionServiceIfDisabled()
470+
{
471+
$container = new ContainerBuilder();
472+
$container->setParameter('kernel.debug', true);
473+
474+
$extension = new EnqueueExtension();
475+
476+
$extension->load([[
477+
'transport' => [],
478+
'extensions' => [
479+
'reply_extension' => false,
480+
],
481+
]], $container);
482+
483+
self::assertFalse($container->hasDefinition('enqueue.consumption.reply_extension'));
484+
}
485+
452486
public function testShouldAddJobQueueEntityMapping()
453487
{
454488
$container = new ContainerBuilder();

pkg/enqueue/Consumption/Extension/ReplyExtension.php

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public function onPostReceived(Context $context)
3737

3838
$replyQueue = $context->getPsrContext()->createQueue($replyTo);
3939

40+
$context->getLogger()->debug(sprintf('[ReplyExtension] Send reply to "%s"', $replyTo));
4041
$context->getPsrContext()->createProducer()->send($replyQueue, $replyMessage);
4142
}
4243
}

pkg/enqueue/Tests/Consumption/Extension/ReplyExtensionTest.php

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Enqueue\Psr\PsrProducer;
1313
use Enqueue\Test\ClassExtensionTrait;
1414
use PHPUnit\Framework\TestCase;
15+
use Psr\Log\NullLogger;
1516

1617
class ReplyExtensionTest extends TestCase
1718
{
@@ -129,6 +130,7 @@ public function testShouldSendReplyMessageToReplyQueueOnPostReceived()
129130
$context = new Context($contextMock);
130131
$context->setPsrMessage($message);
131132
$context->setResult(Result::reply($replyMessage));
133+
$context->setLogger(new NullLogger());
132134

133135
$extension->onPostReceived($context);
134136
}

0 commit comments

Comments
 (0)