Skip to content

Commit a5238b2

Browse files
committed
[bundle] Set null transport as default. Prevent errors on bundle install.
1 parent 88a0957 commit a5238b2

File tree

4 files changed

+47
-44
lines changed

4 files changed

+47
-44
lines changed

DependencyInjection/EnqueueExtension.php

+13
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
use Enqueue\Client\TraceableProducer;
66
use Enqueue\JobQueue\Job;
7+
use Enqueue\Null\Symfony\NullTransportFactory;
8+
use Enqueue\Symfony\DefaultTransportFactory;
79
use Enqueue\Symfony\TransportFactoryInterface;
810
use Symfony\Component\Config\FileLocator;
911
use Symfony\Component\Config\Resource\FileResource;
@@ -23,6 +25,9 @@ class EnqueueExtension extends Extension implements PrependExtensionInterface
2325
public function __construct()
2426
{
2527
$this->factories = [];
28+
29+
$this->addTransportFactory(new DefaultTransportFactory());
30+
$this->addTransportFactory(new NullTransportFactory());
2631
}
2732

2833
/**
@@ -47,6 +52,14 @@ public function addTransportFactory(TransportFactoryInterface $transportFactory)
4752
*/
4853
public function load(array $configs, ContainerBuilder $container)
4954
{
55+
// enable null transport by default.
56+
array_unshift($configs, [
57+
'transport' => [
58+
'default' => 'null',
59+
'null' => [],
60+
]
61+
]);
62+
5063
$config = $this->processConfiguration(new Configuration($this->factories), $configs);
5164

5265
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));

EnqueueBundle.php

-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ public function build(ContainerBuilder $container)
4444

4545
/** @var EnqueueExtension $extension */
4646
$extension = $container->getExtension('enqueue');
47-
$extension->addTransportFactory(new DefaultTransportFactory());
48-
$extension->addTransportFactory(new NullTransportFactory());
4947

5048
if (class_exists(StompContext::class)) {
5149
$extension->addTransportFactory(new StompTransportFactory());

Tests/Unit/DependencyInjection/EnqueueExtensionTest.php

+26-12
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Enqueue\Client\TraceableProducer;
1010
use Enqueue\Symfony\DefaultTransportFactory;
1111
use Enqueue\Null\Symfony\NullTransportFactory;
12+
use Enqueue\Symfony\TransportFactoryInterface;
1213
use Enqueue\Test\ClassExtensionTrait;
1314
use Enqueue\Null\NullContext;
1415
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -30,6 +31,25 @@ public function testCouldBeConstructedWithoutAnyArguments()
3031
new EnqueueExtension();
3132
}
3233

34+
public function testShouldRegisterDefaultAndNullTransportFactoriesInConstructor()
35+
{
36+
$extension = new EnqueueExtension();
37+
38+
/** @var TransportFactoryInterface[] $factories */
39+
$factories = $this->readAttribute($extension, 'factories');
40+
41+
$this->assertInternalType('array', $factories);
42+
$this->assertCount(2, $factories);
43+
44+
$this->assertArrayHasKey('default', $factories);
45+
$this->assertInstanceOf(DefaultTransportFactory::class, $factories['default']);
46+
$this->assertEquals('default', $factories['default']->getName());
47+
48+
$this->assertArrayHasKey('null', $factories);
49+
$this->assertInstanceOf(NullTransportFactory::class, $factories['null']);
50+
$this->assertEquals('null', $factories['null']->getName());
51+
}
52+
3353
public function testThrowIfTransportFactoryNameEmpty()
3454
{
3555
$extension = new EnqueueExtension();
@@ -52,31 +72,32 @@ public function testThrowIfTransportFactoryWithSameNameAlreadyAdded()
5272
$extension->addTransportFactory(new FooTransportFactory('foo'));
5373
}
5474

55-
public function testShouldConfigureNullTransport()
75+
public function testShouldEnabledNullTransportAndSetItAsDefault()
5676
{
5777
$container = new ContainerBuilder();
5878

5979
$extension = new EnqueueExtension();
60-
$extension->addTransportFactory(new NullTransportFactory());
6180

6281
$extension->load([[
6382
'transport' => [
83+
'default' => 'null',
6484
'null' => true,
6585
],
6686
]], $container);
6787

88+
self::assertTrue($container->hasAlias('enqueue.transport.default.context'));
89+
self::assertEquals('enqueue.transport.null.context', (string) $container->getAlias('enqueue.transport.default.context'));
90+
6891
self::assertTrue($container->hasDefinition('enqueue.transport.null.context'));
6992
$context = $container->getDefinition('enqueue.transport.null.context');
7093
self::assertEquals(NullContext::class, $context->getClass());
7194
}
7295

73-
public function testShouldUseNullTransportAsDefault()
96+
public function testShouldUseNullTransportAsDefaultWhenExplicitlyConfigured()
7497
{
7598
$container = new ContainerBuilder();
7699

77100
$extension = new EnqueueExtension();
78-
$extension->addTransportFactory(new NullTransportFactory());
79-
$extension->addTransportFactory(new DefaultTransportFactory());
80101

81102
$extension->load([[
82103
'transport' => [
@@ -120,7 +141,6 @@ public function testShouldUseFooTransportAsDefault()
120141

121142
$extension = new EnqueueExtension();
122143
$extension->addTransportFactory(new FooTransportFactory());
123-
$extension->addTransportFactory(new DefaultTransportFactory());
124144

125145
$extension->load([[
126146
'transport' => [
@@ -144,7 +164,6 @@ public function testShouldLoadClientServicesWhenEnabled()
144164
$container = new ContainerBuilder();
145165

146166
$extension = new EnqueueExtension();
147-
$extension->addTransportFactory(new DefaultTransportFactory());
148167
$extension->addTransportFactory(new FooTransportFactory());
149168

150169
$extension->load([[
@@ -167,7 +186,6 @@ public function testShouldUseProducerByDefault()
167186
$container->setParameter('kernel.debug', false);
168187

169188
$extension = new EnqueueExtension();
170-
$extension->addTransportFactory(new DefaultTransportFactory());
171189
$extension->addTransportFactory(new FooTransportFactory());
172190

173191
$extension->load([[
@@ -190,7 +208,6 @@ public function testShouldUseMessageProducerIfTraceableProducerOptionSetToFalseE
190208
$container->setParameter('kernel.debug', false);
191209

192210
$extension = new EnqueueExtension();
193-
$extension->addTransportFactory(new DefaultTransportFactory());
194211
$extension->addTransportFactory(new FooTransportFactory());
195212

196213
$extension->load([[
@@ -215,7 +232,6 @@ public function testShouldUseTraceableMessageProducerIfTraceableProducerOptionSe
215232
$container->setParameter('kernel.debug', true);
216233

217234
$extension = new EnqueueExtension();
218-
$extension->addTransportFactory(new DefaultTransportFactory());
219235
$extension->addTransportFactory(new FooTransportFactory());
220236

221237
$extension->load([[
@@ -250,7 +266,6 @@ public function testShouldLoadDelayRedeliveredMessageExtensionIfRedeliveredDelay
250266
$container->setParameter('kernel.debug', true);
251267

252268
$extension = new EnqueueExtension();
253-
$extension->addTransportFactory(new DefaultTransportFactory());
254269
$extension->addTransportFactory(new FooTransportFactory());
255270

256271
$extension->load([[
@@ -276,7 +291,6 @@ public function testShouldNotLoadDelayRedeliveredMessageExtensionIfRedeliveredDe
276291
$container->setParameter('kernel.debug', true);
277292

278293
$extension = new EnqueueExtension();
279-
$extension->addTransportFactory(new DefaultTransportFactory());
280294
$extension->addTransportFactory(new FooTransportFactory());
281295

282296
$extension->load([[

Tests/Unit/EnqueueBundleTest.php

+8-30
Original file line numberDiff line numberDiff line change
@@ -84,28 +84,6 @@ public function testShouldRegisterExpectedCompilerPasses()
8484
$bundle->build($container);
8585
}
8686

87-
public function testShouldRegisterDefaultAndNullTransportFactories()
88-
{
89-
$extensionMock = $this->createEnqueueExtensionMock();
90-
91-
$container = new ContainerBuilder();
92-
$container->registerExtension($extensionMock);
93-
94-
$extensionMock
95-
->expects($this->at(0))
96-
->method('addTransportFactory')
97-
->with($this->isInstanceOf(DefaultTransportFactory::class))
98-
;
99-
$extensionMock
100-
->expects($this->at(1))
101-
->method('addTransportFactory')
102-
->with($this->isInstanceOf(NullTransportFactory::class))
103-
;
104-
105-
$bundle = new EnqueueBundle();
106-
$bundle->build($container);
107-
}
108-
10987
public function testShouldRegisterStompAndRabbitMqStompTransportFactories()
11088
{
11189
$extensionMock = $this->createEnqueueExtensionMock();
@@ -114,12 +92,12 @@ public function testShouldRegisterStompAndRabbitMqStompTransportFactories()
11492
$container->registerExtension($extensionMock);
11593

11694
$extensionMock
117-
->expects($this->at(2))
95+
->expects($this->at(0))
11896
->method('addTransportFactory')
11997
->with($this->isInstanceOf(StompTransportFactory::class))
12098
;
12199
$extensionMock
122-
->expects($this->at(3))
100+
->expects($this->at(1))
123101
->method('addTransportFactory')
124102
->with($this->isInstanceOf(RabbitMqStompTransportFactory::class))
125103
;
@@ -136,12 +114,12 @@ public function testShouldRegisterAmqpAndRabbitMqAmqpTransportFactories()
136114
$container->registerExtension($extensionMock);
137115

138116
$extensionMock
139-
->expects($this->at(4))
117+
->expects($this->at(2))
140118
->method('addTransportFactory')
141119
->with($this->isInstanceOf(AmqpTransportFactory::class))
142120
;
143121
$extensionMock
144-
->expects($this->at(5))
122+
->expects($this->at(3))
145123
->method('addTransportFactory')
146124
->with($this->isInstanceOf(RabbitMqAmqpTransportFactory::class))
147125
;
@@ -158,7 +136,7 @@ public function testShouldRegisterFSTransportFactory()
158136
$container->registerExtension($extensionMock);
159137

160138
$extensionMock
161-
->expects($this->at(6))
139+
->expects($this->at(4))
162140
->method('addTransportFactory')
163141
->with($this->isInstanceOf(FsTransportFactory::class))
164142
;
@@ -175,7 +153,7 @@ public function testShouldRegisterRedisTransportFactory()
175153
$container->registerExtension($extensionMock);
176154

177155
$extensionMock
178-
->expects($this->at(7))
156+
->expects($this->at(5))
179157
->method('addTransportFactory')
180158
->with($this->isInstanceOf(RedisTransportFactory::class))
181159
;
@@ -192,7 +170,7 @@ public function testShouldRegisterDbalTransportFactory()
192170
$container->registerExtension($extensionMock);
193171

194172
$extensionMock
195-
->expects($this->at(8))
173+
->expects($this->at(6))
196174
->method('addTransportFactory')
197175
->with($this->isInstanceOf(DbalTransportFactory::class))
198176
;
@@ -209,7 +187,7 @@ public function testShouldRegisterSqsTransportFactory()
209187
$container->registerExtension($extensionMock);
210188

211189
$extensionMock
212-
->expects($this->at(9))
190+
->expects($this->at(7))
213191
->method('addTransportFactory')
214192
->with($this->isInstanceOf(SqsTransportFactory::class))
215193
;

0 commit comments

Comments
 (0)