Skip to content

Commit 363d00d

Browse files
committed
Add test for pre-telemetry Sylius guard
1 parent c5e9685 commit 363d00d

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

src/TelemetryCompilerPass.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44

55
namespace Sylius\Telemetry;
66

7+
use Sylius\Bundle\CoreBundle\SyliusCoreBundle;
8+
use Sylius\Component\Core\Telemetry\TelemetrySendManagerInterface;
79
use Symfony\Component\Config\FileLocator;
810
use Symfony\Component\Config\Loader\DelegatingLoader;
911
use Symfony\Component\Config\Loader\LoaderResolver;
1012
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1113
use Symfony\Component\DependencyInjection\ContainerBuilder;
1214
use Symfony\Component\DependencyInjection\Loader\DirectoryLoader;
1315
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
16+
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
1417

15-
final class TelemetryCompilerPass implements CompilerPassInterface
18+
class TelemetryCompilerPass implements CompilerPassInterface
1619
{
1720
public function process(ContainerBuilder $container): void
1821
{
@@ -32,14 +35,14 @@ public function process(ContainerBuilder $container): void
3235
$this->loadTelemetryServices($container);
3336
}
3437

35-
private function isTelemetrySupported(): bool
38+
protected function isTelemetrySupported(): bool
3639
{
37-
return interface_exists(\Sylius\Component\Core\Telemetry\TelemetrySendManagerInterface::class);
40+
return interface_exists(TelemetrySendManagerInterface::class);
3841
}
3942

4043
private function loadTelemetryServices(ContainerBuilder $container): void
4144
{
42-
$bundleDir = dirname((new \ReflectionClass(\Sylius\Bundle\CoreBundle\SyliusCoreBundle::class))->getFileName());
45+
$bundleDir = dirname((new \ReflectionClass(SyliusCoreBundle::class))->getFileName());
4346
$configDir = $bundleDir . '/Resources/config/services/telemetry';
4447

4548
$locator = new FileLocator($configDir);
@@ -49,8 +52,8 @@ private function loadTelemetryServices(ContainerBuilder $container): void
4952
new DirectoryLoader($container, $locator),
5053
];
5154

52-
if (class_exists(\Symfony\Component\DependencyInjection\Loader\XmlFileLoader::class)) {
53-
$loaders[] = new \Symfony\Component\DependencyInjection\Loader\XmlFileLoader($container, $locator);
55+
if (class_exists(XmlFileLoader::class)) {
56+
$loaders[] = new XmlFileLoader($container, $locator);
5457
}
5558

5659
$loader = new DelegatingLoader(new LoaderResolver($loaders));

tests/Unit/TelemetryCompilerPassTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,21 @@ public function testItSkipsInTestEnvironment(): void
4040
$this->assertFalse($container->has('sylius.telemetry.send_manager'));
4141
}
4242

43+
public function testItSkipsWhenSyliusDoesNotSupportTelemetry(): void
44+
{
45+
$container = $this->createContainer('prod');
46+
47+
$pass = new class () extends TelemetryCompilerPass {
48+
protected function isTelemetrySupported(): bool
49+
{
50+
return false;
51+
}
52+
};
53+
$pass->process($container);
54+
55+
$this->assertFalse($container->has('sylius.telemetry.send_manager'));
56+
}
57+
4358
public function testItLoadsTelemetryServicesInProd(): void
4459
{
4560
$container = $this->createContainer('prod');

0 commit comments

Comments
 (0)