2626use MongoDB \Client ;
2727use MongoDB \Driver \ServerApi ;
2828use PHPUnit \Framework \TestCase ;
29+ use stdClass ;
30+ use Symfony \Component \DependencyInjection \ChildDefinition ;
2931use Symfony \Component \DependencyInjection \ContainerBuilder ;
3032use Symfony \Component \DependencyInjection \Definition ;
3133use Symfony \Component \DependencyInjection \ParameterBag \EnvPlaceholderParameterBag ;
3234
35+ use function array_column ;
36+ use function is_a ;
37+ use function sprintf ;
38+
3339/** @covers \MongoDB\Bundle\DependencyInjection\MongoDBExtension */
3440final class MongoDBExtensionTest extends TestCase
3541{
@@ -52,8 +58,9 @@ public function testLoadWithSingleClient(): void
5258 'clients ' => [
5359 ['id ' => 'default ' , 'uri ' => 'mongodb://localhost:27017 ' ],
5460 ],
55- ]], [
56- 'profiler ' => new Definition (\stdClass::class),
61+ ],
62+ ], [
63+ 'profiler ' => new Definition (stdClass::class),
5764 ]);
5865
5966 $ this ->assertTrue ($ container ->hasDefinition ('mongodb.client.default ' ));
@@ -62,18 +69,17 @@ public function testLoadWithSingleClient(): void
6269
6370 // Check service definition
6471 $ definition = $ container ->getDefinition ('mongodb.client.default ' );
65- $ this ->assertTrue (is_a ($ definition ->getClass (), Client::class, true ), sprintf ('Expected "%s" to be a "%s" ' , $ definition ->getClass (), Client::class));
6672 $ this ->assertSame ('mongodb://localhost:27017 ' , $ definition ->getArgument ('$uri ' ));
6773 $ this ->assertTrue ($ definition ->hasMethodCall ('addSubscriber ' ));
74+ $ this ->assertInstanceOf (ChildDefinition::class, $ definition );
75+ $ this ->assertSame ('mongodb.abstract.client ' , $ definition ->getParent ());
76+ $ parentDefinition = $ container ->getDefinition ($ definition ->getParent ());
77+ $ this ->assertTrue (is_a ($ parentDefinition ->getClass (), Client::class, true ), sprintf ('Expected "%s" to be a "%s" ' , $ definition ->getClass (), Client::class));
78+ $ this ->assertTrue ($ parentDefinition ->isAbstract ());
6879
6980 // Check alias definition
7081 $ alias = $ container ->getAlias (Client::class);
7182 $ 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 ]);
7783 }
7884
7985 public function testLoadWithoutProfiler (): void
@@ -82,7 +88,8 @@ public function testLoadWithoutProfiler(): void
8288 'clients ' => [
8389 ['id ' => 'default ' , 'uri ' => 'mongodb://localhost:27017 ' ],
8490 ],
85- ]]);
91+ ],
92+ ]);
8693
8794 // Check service definition
8895 $ definition = $ container ->getDefinition ('mongodb.client.default ' );
@@ -109,8 +116,9 @@ public function testLoadWithMultipleClients(): void
109116 'driver_options ' => ['serverApi ' => new ServerApi ((string ) ServerApi::V1 )],
110117 ],
111118 ],
112- ]], [
113- 'profiler ' => new Definition (\stdClass::class),
119+ ],
120+ ], [
121+ 'profiler ' => new Definition (stdClass::class),
114122 ]);
115123
116124 $ this ->assertTrue ($ container ->hasDefinition ('mongodb.client.default ' ));
@@ -120,13 +128,15 @@ public function testLoadWithMultipleClients(): void
120128
121129 // Check service definitions
122130 $ definition = $ container ->getDefinition ('mongodb.client.default ' );
123- $ this ->assertTrue (is_a ($ definition ->getClass (), Client::class, true ), sprintf ('Expected "%s" to be a "%s" ' , $ definition ->getClass (), Client::class));
131+ $ this ->assertInstanceOf (ChildDefinition::class, $ definition );
132+ $ this ->assertSame ('mongodb.abstract.client ' , $ definition ->getParent ());
124133 $ this ->assertSame ('mongodb://localhost:27017 ' , $ definition ->getArgument ('$uri ' ));
125134 $ this ->assertSame (['readPreference ' => 'primary ' ], $ definition ->getArgument ('$uriOptions ' ));
126135 $ this ->assertTrue ($ definition ->hasMethodCall ('addSubscriber ' ));
127136
128137 $ definition = $ container ->getDefinition ('mongodb.client.secondary ' );
129- $ this ->assertTrue (is_a ($ definition ->getClass (), Client::class, true ), sprintf ('Expected "%s" to be a "%s" ' , $ definition ->getClass (), Client::class));
138+ $ this ->assertInstanceOf (ChildDefinition::class, $ definition );
139+ $ this ->assertSame ('mongodb.abstract.client ' , $ definition ->getParent ());
130140 $ this ->assertSame ('mongodb://localhost:27018 ' , $ definition ->getArgument ('$uri ' ));
131141 $ this ->assertEquals (['serverApi ' => new ServerApi ((string ) ServerApi::V1 )], $ definition ->getArgument ('$driverOptions ' ));
132142 $ this ->assertTrue ($ definition ->hasMethodCall ('addSubscriber ' ));
0 commit comments