1010use Enqueue \Null \NullContext ;
1111use Enqueue \Null \Symfony \NullTransportFactory ;
1212use Enqueue \Symfony \DefaultTransportFactory ;
13+ use Enqueue \Symfony \TransportFactoryInterface ;
1314use Enqueue \Test \ClassExtensionTrait ;
1415use PHPUnit \Framework \TestCase ;
1516use 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 ' => [
@@ -95,30 +116,6 @@ public function testShouldUseNullTransportAsDefault()
95116 );
96117 }
97118
98- public function testShouldUseNullTransportAsDefaultConfiguredViaDSN ()
99- {
100- $ container = new ContainerBuilder ();
101-
102- $ extension = new EnqueueExtension ();
103- $ extension ->addTransportFactory (new NullTransportFactory ());
104- $ extension ->addTransportFactory (new DefaultTransportFactory ());
105-
106- $ extension ->load ([[
107- 'transport ' => [
108- 'default ' => 'null:// ' ,
109- ],
110- ]], $ container );
111-
112- self ::assertEquals (
113- 'enqueue.transport.default.context ' ,
114- (string ) $ container ->getAlias ('enqueue.transport.context ' )
115- );
116- self ::assertEquals (
117- 'enqueue.transport.default_null.context ' ,
118- (string ) $ container ->getAlias ('enqueue.transport.default.context ' )
119- );
120- }
121-
122119 public function testShouldConfigureFooTransport ()
123120 {
124121 $ container = new ContainerBuilder ();
@@ -144,7 +141,6 @@ public function testShouldUseFooTransportAsDefault()
144141
145142 $ extension = new EnqueueExtension ();
146143 $ extension ->addTransportFactory (new FooTransportFactory ());
147- $ extension ->addTransportFactory (new DefaultTransportFactory ());
148144
149145 $ extension ->load ([[
150146 'transport ' => [
@@ -168,7 +164,6 @@ public function testShouldLoadClientServicesWhenEnabled()
168164 $ container = new ContainerBuilder ();
169165
170166 $ extension = new EnqueueExtension ();
171- $ extension ->addTransportFactory (new DefaultTransportFactory ());
172167 $ extension ->addTransportFactory (new FooTransportFactory ());
173168
174169 $ extension ->load ([[
@@ -191,7 +186,6 @@ public function testShouldUseProducerByDefault()
191186 $ container ->setParameter ('kernel.debug ' , false );
192187
193188 $ extension = new EnqueueExtension ();
194- $ extension ->addTransportFactory (new DefaultTransportFactory ());
195189 $ extension ->addTransportFactory (new FooTransportFactory ());
196190
197191 $ extension ->load ([[
@@ -214,7 +208,6 @@ public function testShouldUseMessageProducerIfTraceableProducerOptionSetToFalseE
214208 $ container ->setParameter ('kernel.debug ' , false );
215209
216210 $ extension = new EnqueueExtension ();
217- $ extension ->addTransportFactory (new DefaultTransportFactory ());
218211 $ extension ->addTransportFactory (new FooTransportFactory ());
219212
220213 $ extension ->load ([[
@@ -239,7 +232,6 @@ public function testShouldUseTraceableMessageProducerIfTraceableProducerOptionSe
239232 $ container ->setParameter ('kernel.debug ' , true );
240233
241234 $ extension = new EnqueueExtension ();
242- $ extension ->addTransportFactory (new DefaultTransportFactory ());
243235 $ extension ->addTransportFactory (new FooTransportFactory ());
244236
245237 $ extension ->load ([[
@@ -274,7 +266,6 @@ public function testShouldLoadDelayRedeliveredMessageExtensionIfRedeliveredDelay
274266 $ container ->setParameter ('kernel.debug ' , true );
275267
276268 $ extension = new EnqueueExtension ();
277- $ extension ->addTransportFactory (new DefaultTransportFactory ());
278269 $ extension ->addTransportFactory (new FooTransportFactory ());
279270
280271 $ extension ->load ([[
@@ -300,7 +291,6 @@ public function testShouldNotLoadDelayRedeliveredMessageExtensionIfRedeliveredDe
300291 $ container ->setParameter ('kernel.debug ' , true );
301292
302293 $ extension = new EnqueueExtension ();
303- $ extension ->addTransportFactory (new DefaultTransportFactory ());
304294 $ extension ->addTransportFactory (new FooTransportFactory ());
305295
306296 $ extension ->load ([[
0 commit comments