Skip to content

Commit 09f804c

Browse files
committed
Add tests on data collector services
1 parent 7533626 commit 09f804c

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

tests/Unit/DependencyInjection/MongoDBExtensionTest.php

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121
namespace MongoDB\Bundle\Tests\Unit\DependencyInjection;
2222

2323
use InvalidArgumentException;
24+
use MongoDB\Bundle\DependencyInjection\Compiler\DataCollectorPass;
2425
use MongoDB\Bundle\DependencyInjection\MongoDBExtension;
2526
use MongoDB\Client;
2627
use MongoDB\Driver\ServerApi;
2728
use PHPUnit\Framework\TestCase;
2829
use Symfony\Component\DependencyInjection\ContainerBuilder;
30+
use Symfony\Component\DependencyInjection\Definition;
2931
use Symfony\Component\DependencyInjection\ParameterBag\EnvPlaceholderParameterBag;
3032

3133
/** @covers \MongoDB\Bundle\DependencyInjection\MongoDBExtension */
@@ -50,7 +52,8 @@ public function testLoadWithSingleClient(): void
5052
'clients' => [
5153
['id' => 'default', 'uri' => 'mongodb://localhost:27017'],
5254
],
53-
],
55+
]], [
56+
'profiler' => new Definition(\stdClass::class),
5457
]);
5558

5659
$this->assertTrue($container->hasDefinition('mongodb.client.default'));
@@ -61,10 +64,33 @@ public function testLoadWithSingleClient(): void
6164
$definition = $container->getDefinition('mongodb.client.default');
6265
$this->assertTrue(is_a($definition->getClass(), Client::class, true), sprintf('Expected "%s" to be a "%s"', $definition->getClass(), Client::class));
6366
$this->assertSame('mongodb://localhost:27017', $definition->getArgument('$uri'));
67+
$this->assertTrue($definition->hasMethodCall('addSubscriber'));
6468

6569
// Check alias definition
6670
$alias = $container->getAlias(Client::class);
6771
$this->assertSame('mongodb.client.default', (string) $alias);
72+
73+
// Check data collector
74+
$definition = $container->getDefinition('mongodb.data_collector');
75+
$this->assertTrue($definition->hasMethodCall('addClient'));
76+
$this->assertSame('default', $definition->getMethodCalls()[0][1][0]);
77+
}
78+
79+
public function testLoadWithoutProfiler(): void
80+
{
81+
$container = $this->getContainer([[
82+
'clients' => [
83+
['id' => 'default', 'uri' => 'mongodb://localhost:27017'],
84+
],
85+
]]);
86+
87+
// Check service definition
88+
$definition = $container->getDefinition('mongodb.client.default');
89+
$this->assertFalse($definition->hasMethodCall('addSubscriber'));
90+
91+
// Check data collector
92+
$definition = $container->getDefinition('mongodb.data_collector');
93+
$this->assertFalse($definition->hasMethodCall('addClient'));
6894
}
6995

7096
public function testLoadWithMultipleClients(): void
@@ -83,7 +109,8 @@ public function testLoadWithMultipleClients(): void
83109
'driverOptions' => ['serverApi' => new ServerApi((string) ServerApi::V1)],
84110
],
85111
],
86-
],
112+
]], [
113+
'profiler' => new Definition(\stdClass::class),
87114
]);
88115

89116
$this->assertTrue($container->hasDefinition('mongodb.client.default'));
@@ -96,11 +123,19 @@ public function testLoadWithMultipleClients(): void
96123
$this->assertTrue(is_a($definition->getClass(), Client::class, true), sprintf('Expected "%s" to be a "%s"', $definition->getClass(), Client::class));
97124
$this->assertSame('mongodb://localhost:27017', $definition->getArgument('$uri'));
98125
$this->assertSame(['readPreference' => 'primary'], $definition->getArgument('$uriOptions'));
126+
$this->assertTrue($definition->hasMethodCall('addSubscriber'));
99127

100128
$definition = $container->getDefinition('mongodb.client.secondary');
101129
$this->assertTrue(is_a($definition->getClass(), Client::class, true), sprintf('Expected "%s" to be a "%s"', $definition->getClass(), Client::class));
102130
$this->assertSame('mongodb://localhost:27018', $definition->getArgument('$uri'));
103131
$this->assertEquals(['serverApi' => new ServerApi((string) ServerApi::V1)], $definition->getArgument('$driverOptions'));
132+
$this->assertTrue($definition->hasMethodCall('addSubscriber'));
133+
134+
// Check data collector
135+
$definition = $container->getDefinition('mongodb.data_collector');
136+
$this->assertCount(2, $definition->getMethodCalls());
137+
$this->assertTrue($definition->hasMethodCall('addClient'));
138+
$this->assertSame(['default', 'secondary'], array_column(array_column($definition->getMethodCalls(), 1), 0));
104139
}
105140

106141
private function getContainer(array $config = [], array $thirdPartyDefinitions = []): ContainerBuilder
@@ -113,6 +148,7 @@ private function getContainer(array $config = [], array $thirdPartyDefinitions =
113148

114149
$container->getCompilerPassConfig()->setOptimizationPasses([]);
115150
$container->getCompilerPassConfig()->setRemovingPasses([]);
151+
$container->addCompilerPass(new DataCollectorPass());
116152

117153
$loader = new MongoDBExtension();
118154
$loader->load($config, $container);

0 commit comments

Comments
 (0)