Skip to content

Commit bfbd600

Browse files
committed
remove matthiasnoback dependency for increased Symfony compatibility
1 parent 3089f33 commit bfbd600

File tree

5 files changed

+228
-99
lines changed

5 files changed

+228
-99
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,10 @@ jobs:
139139
- '7.3'
140140
- '7.4'
141141
symfony-version:
142-
# - '4.0' matthiasnoback/symfony-dependency-injection-test 4.3.0 requires symfony/config ^4.4 || ^5.3 || ^6.0
143-
# - '4.1' matthiasnoback/symfony-dependency-injection-test 4.3.0 requires symfony/config ^4.4 || ^5.3 || ^6.0
144-
# - '4.2' matthiasnoback/symfony-dependency-injection-test 4.3.0 requires symfony/config ^4.4 || ^5.3 || ^6.0
145-
# - '4.3' matthiasnoback/symfony-dependency-injection-test 4.3.0 requires symfony/config ^4.4 || ^5.3 || ^6.0
142+
- '4.0'
143+
- '4.1'
144+
- '4.2'
145+
- '4.3'
146146
- '4.4'
147147
composer-dependencies:
148148
- 'highest'

composer.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
},
2323
"require-dev": {
2424
"consistence/coding-standard": "3.10.1",
25-
"matthiasnoback/symfony-dependency-injection-test": "4.3",
2625
"php-parallel-lint/php-console-highlighter": "1.0",
2726
"php-parallel-lint/php-parallel-lint": "1.3.2",
2827
"phing/phing": "2.17.2",

tests/DependencyInjection/RabbitMqDatabaseTransactionProducerExtensionTest.php

Lines changed: 61 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -9,44 +9,35 @@
99
use PHPUnit\Framework\Assert;
1010
use Symfony\Component\DependencyInjection\ContainerBuilder;
1111
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
12+
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
1213
use VasekPurchart\RabbitMqDatabaseTransactionProducerBundle\Doctrine\Connection\Connection;
1314

14-
class RabbitMqDatabaseTransactionProducerExtensionTest extends \Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase
15+
class RabbitMqDatabaseTransactionProducerExtensionTest extends \PHPUnit\Framework\TestCase
1516
{
1617

17-
public function setUp(): void
18-
{
19-
parent::setUp();
20-
$this->setParameter('kernel.debug', true);
21-
}
22-
23-
/**
24-
* @return \Symfony\Component\DependencyInjection\Extension\ExtensionInterface[]
25-
*/
26-
protected function getContainerExtensions(): array
27-
{
28-
return [
29-
new DoctrineExtension(),
30-
new RabbitMqDatabaseTransactionProducerExtension(),
31-
];
32-
}
33-
3418
public function testDependsOnDoctrineBundle(): void
3519
{
36-
$containerBuilder = new ContainerBuilder();
20+
$container = self::createContainer();
21+
$container->setParameter('kernel.debug', true);
3722
$extension = new RabbitMqDatabaseTransactionProducerExtension();
3823
$this->expectException(
3924
\VasekPurchart\RabbitMqDatabaseTransactionProducerBundle\DependencyInjection\DoctrineExtensionNotFoundException::class
4025
);
41-
$extension->prepend($containerBuilder);
26+
$extension->prepend($container);
4227
}
4328

4429
public function testRegisterCustomConnectionClass(): void
4530
{
46-
$this->loadExtensions();
31+
$container = self::createContainer();
32+
$container->setParameter('kernel.debug', true);
33+
$container->registerExtension(new DoctrineExtension());
34+
$container->registerExtension(new RabbitMqDatabaseTransactionProducerExtension());
35+
36+
self::loadRegisteredExtensionsUsingConfigurationByAlias($container);
4737

48-
$doctrineConfig = $this->container->getExtensionConfig('doctrine');
49-
if (!isset($doctrineConfig[0]) || !isset($doctrineConfig[0]['dbal']) || !isset($doctrineConfig[0]['dbal']['wrapper_class'])) {
38+
$doctrineConfig = $container->getExtensionConfig('doctrine');
39+
if (!isset($doctrineConfig[0]) || !isset($doctrineConfig[0]['dbal'])
40+
|| !isset($doctrineConfig[0]['dbal']['wrapper_class'])) {
5041
Assert::fail();
5142
}
5243

@@ -78,7 +69,7 @@ public function configureContainerParameterDataProvider(): Generator
7869
/**
7970
* @dataProvider configureContainerParameterDataProvider
8071
*
81-
* @param mixed[][] $configuration
72+
* @param mixed[][]|array $configuration
8273
* @param string $parameterName
8374
* @param bool $expectedParameterValue
8475
*/
@@ -88,39 +79,62 @@ public function testConfigureContainerParameter(
8879
bool $expectedParameterValue
8980
): void
9081
{
91-
$this->loadExtensions($configuration);
82+
$container = self::createContainer();
83+
$container->setParameter('kernel.debug', true);
84+
$container->registerExtension(new DoctrineExtension());
85+
$container->registerExtension(new RabbitMqDatabaseTransactionProducerExtension());
9286

93-
$this->assertContainerBuilderHasParameter(
94-
$parameterName,
95-
$expectedParameterValue
96-
);
87+
self::loadRegisteredExtensionsUsingConfigurationByAlias($container, $configuration);
88+
89+
self::assertContainerHasParameter($container, $parameterName);
90+
Assert::assertSame($expectedParameterValue, $container->getParameter($parameterName));
91+
}
92+
93+
private static function createContainer(): ContainerBuilder
94+
{
95+
$container = new ContainerBuilder(new ParameterBag([]));
96+
$container->getCompilerPassConfig()->setOptimizationPasses([]);
97+
$container->getCompilerPassConfig()->setRemovingPasses([]);
98+
$container->getCompilerPassConfig()->setAfterRemovingPasses([]);
99+
100+
return $container;
97101
}
98102

99103
/**
100-
* @param mixed[] $configuration format: extensionAlias(string) => configuration(mixed[])
104+
* @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
105+
* @param mixed[][]|array $configurationsByAlias format: extensionAlias(string) => configuration(mixed[])
101106
*/
102-
private function loadExtensions(array $configuration = []): void
107+
private static function loadRegisteredExtensionsUsingConfigurationByAlias(
108+
ContainerBuilder $container,
109+
array $configurationsByAlias = []
110+
): void
103111
{
104-
$configurations = [];
105-
foreach ($this->container->getExtensions() as $extensionAlias => $extension) {
106-
$configurations[$extensionAlias] = [];
107-
if (array_key_exists($extensionAlias, $this->getMinimalConfiguration())) {
108-
$this->container->loadFromExtension($extensionAlias, $this->getMinimalConfiguration()[$extensionAlias]);
109-
$configurations[$extensionAlias][] = $this->getMinimalConfiguration()[$extensionAlias];
110-
}
111-
if (array_key_exists($extensionAlias, $configuration)) {
112-
$this->container->loadFromExtension($extensionAlias, $configuration[$extensionAlias]);
113-
$configurations[$extensionAlias][] = $configuration[$extensionAlias];
114-
}
115-
}
116-
foreach ($this->container->getExtensions() as $extensionAlias => $extension) {
112+
foreach ($container->getExtensions() as $extension) {
117113
if ($extension instanceof PrependExtensionInterface) {
118-
$extension->prepend($this->container);
114+
$extension->prepend($container);
119115
}
120116
}
121-
foreach ($this->container->getExtensions() as $extensionAlias => $extension) {
122-
$extension->load($configurations[$extensionAlias], $this->container);
117+
118+
foreach ($container->getExtensions() as $extensionAlias => $extension) {
119+
$configuration = [];
120+
121+
if (array_key_exists($extensionAlias, $configurationsByAlias)) {
122+
$configuration = $configurationsByAlias[$extensionAlias];
123+
}
124+
125+
$extension->load([$configuration], $container);
123126
}
124127
}
125128

129+
private static function assertContainerHasParameter(
130+
ContainerBuilder $container,
131+
string $parameterName
132+
): void
133+
{
134+
Assert::assertTrue(
135+
$container->hasParameter($parameterName),
136+
sprintf('Expecting the container to have parameter `%s`.', $parameterName)
137+
);
138+
}
139+
126140
}

tests/Doctrine/Connection/ConnectionCompilerPassTest.php

Lines changed: 62 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,35 @@
77
use PHPUnit\Framework\Assert;
88
use Symfony\Component\DependencyInjection\ContainerBuilder;
99
use Symfony\Component\DependencyInjection\Definition;
10+
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
1011
use Symfony\Component\DependencyInjection\Reference;
1112
use VasekPurchart\RabbitMqDatabaseTransactionProducerBundle\DependencyInjection\RabbitMqDatabaseTransactionProducerExtension;
1213

13-
class ConnectionCompilerPassTest extends \Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractCompilerPassTestCase
14+
class ConnectionCompilerPassTest extends \PHPUnit\Framework\TestCase
1415
{
1516

16-
protected function registerCompilerPass(ContainerBuilder $container): void
17+
public function testSetLoggerForConnection(): void
1718
{
19+
$container = self::createContainer();
1820
$container->addCompilerPass(new ConnectionCompilerPass());
19-
}
2021

21-
public function testSetLoggerForConnection(): void
22-
{
2322
$connectionDefinition = new Definition(Connection::class);
24-
$this->setDefinition(
23+
$container->setDefinition(
2524
RabbitMqDatabaseTransactionProducerExtension::CONTAINER_SERVICE_DATABASE_CONNECTION,
2625
$connectionDefinition
2726
);
28-
$this->setParameter(
27+
$container->setParameter(
2928
'rabbit_mq_database_transaction_producer_bundle.custom_connection_class',
3029
false
3130
);
3231

33-
$this->compile();
32+
$container->compile();
3433

35-
$this->assertContainerBuilderHasService(
36-
RabbitMqDatabaseTransactionProducerExtension::CONTAINER_SERVICE_DATABASE_CONNECTION,
37-
Connection::class
34+
self::assertContainerHasService(
35+
$container,
36+
RabbitMqDatabaseTransactionProducerExtension::CONTAINER_SERVICE_DATABASE_CONNECTION
3837
);
39-
$setLoggerCall = $this->container->findDefinition(
38+
$setLoggerCall = $container->findDefinition(
4039
RabbitMqDatabaseTransactionProducerExtension::CONTAINER_SERVICE_DATABASE_CONNECTION
4140
)->getMethodCalls()[0];
4241
Assert::assertSame('setLogger', $setLoggerCall[0]);
@@ -49,28 +48,74 @@ public function testSetLoggerForConnection(): void
4948

5049
public function testDoNothingWhenCustomConnectionClassIsSpecified(): void
5150
{
51+
$container = self::createContainer();
52+
$container->addCompilerPass(new ConnectionCompilerPass());
53+
5254
$connectionDefinition = new Definition(Connection::class);
53-
$this->setDefinition(
55+
$container->setDefinition(
5456
RabbitMqDatabaseTransactionProducerExtension::CONTAINER_SERVICE_DATABASE_CONNECTION,
5557
$connectionDefinition
5658
);
57-
$this->setParameter(
59+
$container->setParameter(
5860
'rabbit_mq_database_transaction_producer_bundle.custom_connection_class',
5961
true
6062
);
6163

62-
$this->compile();
64+
$container->compile();
6365

64-
$this->assertContainerBuilderHasService(
66+
self::assertContainerHasService(
67+
$container,
68+
RabbitMqDatabaseTransactionProducerExtension::CONTAINER_SERVICE_DATABASE_CONNECTION
69+
);
70+
71+
self::assertContainerServiceIsOfType(
72+
$container,
6573
RabbitMqDatabaseTransactionProducerExtension::CONTAINER_SERVICE_DATABASE_CONNECTION,
6674
Connection::class
6775
);
68-
$methodCalls = $this->container->findDefinition(
76+
77+
$methodCalls = $container->findDefinition(
6978
RabbitMqDatabaseTransactionProducerExtension::CONTAINER_SERVICE_DATABASE_CONNECTION
7079
)->getMethodCalls();
7180
foreach ($methodCalls as $methodCall) {
7281
Assert::assertNotSame('setLogger', $methodCall[0]);
7382
}
7483
}
7584

85+
private static function createContainer(): ContainerBuilder
86+
{
87+
$container = new ContainerBuilder(new ParameterBag([]));
88+
$container->getCompilerPassConfig()->setOptimizationPasses([]);
89+
$container->getCompilerPassConfig()->setRemovingPasses([]);
90+
$container->getCompilerPassConfig()->setAfterRemovingPasses([]);
91+
92+
return $container;
93+
}
94+
95+
private static function assertContainerHasService(
96+
ContainerBuilder $container,
97+
string $serviceId
98+
): void
99+
{
100+
Assert::assertTrue(
101+
$container->has($serviceId),
102+
sprintf('Expecting the container to have service `%s`.', $serviceId)
103+
);
104+
}
105+
106+
private static function assertContainerServiceIsOfType(
107+
ContainerBuilder $container,
108+
string $serviceId,
109+
string $expectedClassString
110+
): void
111+
{
112+
$serviceDefinition = $container->findDefinition($serviceId);
113+
114+
Assert::assertSame(
115+
$expectedClassString,
116+
$container->getParameterBag()->resolveValue($serviceDefinition->getClass()),
117+
sprintf('Expecting the service `%s` to be of type `%s`.', $serviceId, $expectedClassString)
118+
);
119+
}
120+
76121
}

0 commit comments

Comments
 (0)