Skip to content

Commit 530f49b

Browse files
committed
Improve coverage
1 parent f1e8347 commit 530f49b

File tree

4 files changed

+50
-27
lines changed

4 files changed

+50
-27
lines changed

src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,18 @@ public function load(array $configs, ContainerBuilder $container)
8989
$loader->load('security.xml');
9090
}
9191

92+
$useDoctrine = isset($bundles['DoctrineBundle']) && class_exists(Version::class);
93+
9294
$this->registerMetadataConfiguration($container, $loader, $bundles, $config['loader_paths']);
9395
$this->registerOAuthConfiguration($container, $config, $loader);
9496
$this->registerSwaggerConfiguration($container, $config, $loader);
9597
$this->registerJsonLdConfiguration($formats, $loader);
9698
$this->registerJsonHalConfiguration($formats, $loader);
9799
$this->registerJsonProblemConfiguration($errorFormats, $loader);
98-
$this->registerBundlesConfiguration($bundles, $config, $loader);
100+
$this->registerBundlesConfiguration($bundles, $config, $loader, $useDoctrine);
99101
$this->registerCacheConfiguration($container);
100-
$this->registerDoctrineExtensionConfiguration($container, $config);
101-
$this->registerHttpCache($container, $config, $loader);
102+
$this->registerDoctrineExtensionConfiguration($container, $config, $useDoctrine);
103+
$this->registerHttpCache($container, $config, $loader, $useDoctrine);
102104
}
103105

104106
/**
@@ -316,11 +318,12 @@ private function registerJsonProblemConfiguration(array $errorFormats, XmlFileLo
316318
* @param string[] $bundles
317319
* @param array $config
318320
* @param XmlFileLoader $loader
321+
* @param bool $useDoctrine
319322
*/
320-
private function registerBundlesConfiguration(array $bundles, array $config, XmlFileLoader $loader)
323+
private function registerBundlesConfiguration(array $bundles, array $config, XmlFileLoader $loader, bool $useDoctrine)
321324
{
322325
// Doctrine ORM support
323-
if (isset($bundles['DoctrineBundle']) && class_exists(Version::class)) {
326+
if ($useDoctrine) {
324327
$loader->load('doctrine_orm.xml');
325328
}
326329

@@ -357,28 +360,32 @@ private function registerCacheConfiguration(ContainerBuilder $container)
357360
*
358361
* @param ContainerBuilder $container
359362
* @param array $config
363+
* @param bool $useDoctrine
360364
*/
361-
private function registerDoctrineExtensionConfiguration(ContainerBuilder $container, array $config)
365+
private function registerDoctrineExtensionConfiguration(ContainerBuilder $container, array $config, bool $useDoctrine)
362366
{
363-
if (false === $config['eager_loading']['enabled']) {
364-
$container->removeDefinition('api_platform.doctrine.orm.query_extension.eager_loading');
365-
$container->removeDefinition('api_platform.doctrine.orm.query_extension.filter_eager_loading');
367+
if (!$useDoctrine || $config['eager_loading']['enabled']) {
368+
return;
366369
}
370+
371+
$container->removeDefinition('api_platform.doctrine.orm.query_extension.eager_loading');
372+
$container->removeDefinition('api_platform.doctrine.orm.query_extension.filter_eager_loading');
367373
}
368374

369-
private function registerHttpCache(ContainerBuilder $container, array $config, XmlFileLoader $loader)
375+
private function registerHttpCache(ContainerBuilder $container, array $config, XmlFileLoader $loader, bool $useDoctrine)
370376
{
371377
$loader->load('http_cache.xml');
372378

373-
if (true !== $config['http_cache']['invalidation']['enabled']) {
374-
if ($container->has('api_platform.doctrine.listener.http_cache.purge')) {
375-
$container->removeDefinition('api_platform.doctrine.listener.http_cache.purge');
376-
}
377-
379+
if (!$config['http_cache']['invalidation']['enabled']) {
378380
return;
379381
}
380382

383+
if ($useDoctrine) {
384+
$loader->load('doctrine_orm_http_cache_purger.xml');
385+
}
386+
381387
$loader->load('http_cache_tags.xml');
388+
382389
if (!$config['http_cache']['invalidation']['varnish_urls']) {
383390
return;
384391
}

src/Bridge/Symfony/Bundle/Resources/config/doctrine_orm.xml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -103,16 +103,6 @@
103103
<tag name="kernel.event_listener" event="kernel.view" method="onKernelView" priority="32" />
104104
</service>
105105

106-
<service id="api_platform.doctrine.listener.http_cache.purge" class="ApiPlatform\Core\Bridge\Doctrine\EventListener\PurgeHttpCacheListener">
107-
<argument type="service" id="api_platform.http_cache.purger" />
108-
<argument type="service" id="api_platform.iri_converter" />
109-
<argument type="service" id="api_platform.resource_class_resolver" />
110-
111-
<tag name="doctrine.event_listener" event="preUpdate" />
112-
<tag name="doctrine.event_listener" event="onFlush" />
113-
<tag name="doctrine.event_listener" event="postFlush" />
114-
</service>
115-
116106
<!-- Doctrine Query extensions -->
117107

118108
<service id="api_platform.doctrine.orm.query_extension.eager_loading" class="ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\EagerLoadingExtension" public="false">
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" ?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
6+
7+
<services>
8+
9+
<!-- Event listener -->
10+
11+
<service id="api_platform.doctrine.listener.http_cache.purge" class="ApiPlatform\Core\Bridge\Doctrine\EventListener\PurgeHttpCacheListener">
12+
<argument type="service" id="api_platform.http_cache.purger" />
13+
<argument type="service" id="api_platform.iri_converter" />
14+
<argument type="service" id="api_platform.resource_class_resolver" />
15+
16+
<tag name="doctrine.event_listener" event="preUpdate" />
17+
<tag name="doctrine.event_listener" event="onFlush" />
18+
<tag name="doctrine.event_listener" event="postFlush" />
19+
</service>
20+
21+
</services>
22+
23+
</container>

tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class ApiPlatformExtensionTest extends \PHPUnit_Framework_TestCase
4545
'jsonld' => ['mime_types' => ['application/ld+json']],
4646
'jsonhal' => ['mime_types' => ['application/hal+json']],
4747
],
48+
'http_cache' => ['invalidation' => ['enabled' => true]],
4849
]];
4950

5051
private $extension;
@@ -189,7 +190,7 @@ public function testEnableNelmioApiDoc()
189190
$this->extension->load(array_merge_recursive(self::DEFAULT_CONFIG, ['api_platform' => ['enable_nelmio_api_doc' => true]]), $containerBuilder);
190191
}
191192

192-
public function testEnablSecurity()
193+
public function testEnableSecurity()
193194
{
194195
$containerBuilderProphecy = $this->getContainerBuilderProphecy();
195196
$containerBuilderProphecy->getParameter('kernel.bundles')->willReturn([
@@ -400,6 +401,9 @@ private function getContainerBuilderProphecy()
400401
'api_platform.swagger.command.swagger_command',
401402
'api_platform.swagger.normalizer.documentation',
402403
'api_platform.http_cache.listener.response.configure',
404+
'api_platform.http_cache.purger.varnish',
405+
'api_platform.http_cache.purger.varnish_client',
406+
'api_platform.http_cache.listener.response.add_tags',
403407
];
404408

405409
foreach ($definitions as $definition) {
@@ -430,7 +434,6 @@ private function getContainerBuilderProphecy()
430434

431435
$containerBuilderProphecy->getParameter('kernel.debug')->willReturn(false);
432436
$containerBuilderProphecy->getParameter('api_platform.api_resources_directory')->willReturn('Entity');
433-
$containerBuilderProphecy->has('api_platform.doctrine.listener.http_cache.purge')->shouldBeCalled();
434437

435438
return $containerBuilderProphecy;
436439
}

0 commit comments

Comments
 (0)