Skip to content

Commit 902c89d

Browse files
committed
remove matthiasnoback dependency for increased Symfony compatibility
1 parent bba0923 commit 902c89d

File tree

4 files changed

+108
-23
lines changed

4 files changed

+108
-23
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'

build/composer-dependency-analyser.config.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
$config = $config->ignoreErrorsOnPackages([
2828
'consistence/coding-standard',
2929
'phing/phing',
30-
'phpunit/phpunit',
3130
'php-parallel-lint/php-console-highlighter',
3231
'php-parallel-lint/php-parallel-lint',
3332
], [ErrorType::UNUSED_DEPENDENCY]);

composer.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
},
2121
"require-dev": {
2222
"consistence/coding-standard": "3.10.1",
23-
"matthiasnoback/symfony-dependency-injection-test": "4.3",
2423
"php-parallel-lint/php-console-highlighter": "1.0",
2524
"php-parallel-lint/php-parallel-lint": "1.3.2",
2625
"phing/phing": "2.17.2",

tests/DependencyInjection/ConsistenceJmsSerializerExtensionTest.php

Lines changed: 104 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,121 @@
55
namespace Consistence\JmsSerializer\SymfonyBundle\DependencyInjection;
66

77
use Consistence\JmsSerializer\Enum\EnumSerializerHandler;
8+
use PHPUnit\Framework\Assert;
9+
use Symfony\Component\DependencyInjection\ContainerBuilder;
10+
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
11+
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
812

9-
class ConsistenceJmsSerializerExtensionTest extends \Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase
13+
class ConsistenceJmsSerializerExtensionTest extends \PHPUnit\Framework\TestCase
1014
{
1115

12-
/**
13-
* @return \Symfony\Component\DependencyInjection\Extension\ExtensionInterface[]
14-
*/
15-
protected function getContainerExtensions(): array
16+
public function testRegisterSerializerHandler(): void
1617
{
17-
return [
18-
new ConsistenceJmsSerializerExtension(),
19-
];
18+
$container = self::createContainer();
19+
$container->registerExtension(new ConsistenceJmsSerializerExtension());
20+
21+
self::loadRegisteredExtension($container);
22+
23+
$serviceId = 'consistence.jms_serializer.enum.enum_serializer_handler';
24+
self::assertContainerHasService($container, $serviceId);
25+
self::assertContainerServiceIsOfType($container, $serviceId, EnumSerializerHandler::class);
26+
self::assertContainerServiceHasTag(
27+
$container,
28+
$serviceId,
29+
'jms_serializer.subscribing_handler',
30+
[]
31+
);
32+
33+
$container->compile();
2034
}
2135

22-
public function testRegisterSerializerHandler(): void
36+
private static function createContainer(): ContainerBuilder
2337
{
24-
$this->load();
38+
$container = new ContainerBuilder(new ParameterBag([]));
39+
$container->getCompilerPassConfig()->setOptimizationPasses([]);
40+
$container->getCompilerPassConfig()->setRemovingPasses([]);
41+
$container->getCompilerPassConfig()->setAfterRemovingPasses([]);
2542

26-
$this->assertContainerBuilderHasService(
27-
'consistence.jms_serializer.enum.enum_serializer_handler',
28-
EnumSerializerHandler::class
43+
return $container;
44+
}
45+
46+
public static function assertContainerHasService(
47+
ContainerBuilder $container,
48+
string $serviceId
49+
): void
50+
{
51+
Assert::assertTrue(
52+
$container->has($serviceId),
53+
sprintf('Expecting the container to have service `%s`.', $serviceId)
2954
);
30-
$this->assertContainerBuilderHasServiceDefinitionWithTag(
31-
'consistence.jms_serializer.enum.enum_serializer_handler',
32-
'jms_serializer.subscribing_handler'
55+
}
56+
57+
public static function assertContainerServiceIsOfType(
58+
ContainerBuilder $container,
59+
string $serviceId,
60+
string $expectedClassString
61+
): void
62+
{
63+
$serviceDefinition = $container->findDefinition($serviceId);
64+
65+
Assert::assertSame(
66+
$expectedClassString,
67+
$container->getParameterBag()->resolveValue($serviceDefinition->getClass()),
68+
sprintf('Expecting the service `%s` to be of type `%s`.', $serviceId, $expectedClassString)
3369
);
70+
}
71+
72+
private static function assertContainerServiceHasTag(
73+
ContainerBuilder $container,
74+
string $serviceId,
75+
string $tagName
76+
): void
77+
{
78+
$serviceDefinition = $container->findDefinition($serviceId);
79+
80+
Assert::assertTrue(
81+
$serviceDefinition->hasTag($tagName),
82+
sprintf('Expecting the service `%s` to have tag `%s`.', $serviceId, $tagName)
83+
);
84+
}
85+
86+
/**
87+
* @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
88+
* @param mixed[][]|array $configuration
89+
*/
90+
public static function loadRegisteredExtension(
91+
ContainerBuilder $container,
92+
array $configuration = []
93+
): void
94+
{
95+
$registeredExtensionsCount = count($container->getExtensions());
96+
97+
assert(
98+
$registeredExtensionsCount === 1,
99+
sprintf('There are %d extensions registered but one is expected', $registeredExtensionsCount)
100+
);
101+
102+
self::loadRegisteredExtensionsUsingCommonConfiguration($container, $configuration);
103+
}
104+
105+
/**
106+
* @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
107+
* @param mixed[][]|array $configuration
108+
*/
109+
private static function loadRegisteredExtensionsUsingCommonConfiguration(
110+
ContainerBuilder $container,
111+
array $configuration = []
112+
): void
113+
{
114+
foreach ($container->getExtensions() as $extension) {
115+
if ($extension instanceof PrependExtensionInterface) {
116+
$extension->prepend($container);
117+
}
118+
}
34119

35-
$this->compile();
120+
foreach ($container->getExtensions() as $extension) {
121+
$extension->load([$configuration], $container);
122+
}
36123
}
37124

38125
}

0 commit comments

Comments
 (0)