26
26
use MongoDB \Client ;
27
27
use MongoDB \Driver \ServerApi ;
28
28
use PHPUnit \Framework \TestCase ;
29
+ use stdClass ;
30
+ use Symfony \Component \DependencyInjection \ChildDefinition ;
29
31
use Symfony \Component \DependencyInjection \ContainerBuilder ;
30
32
use Symfony \Component \DependencyInjection \Definition ;
31
33
use Symfony \Component \DependencyInjection \ParameterBag \EnvPlaceholderParameterBag ;
32
34
35
+ use function array_column ;
36
+ use function is_a ;
37
+ use function sprintf ;
38
+
33
39
/** @covers \MongoDB\Bundle\DependencyInjection\MongoDBExtension */
34
40
final class MongoDBExtensionTest extends TestCase
35
41
{
@@ -52,8 +58,9 @@ public function testLoadWithSingleClient(): void
52
58
'clients ' => [
53
59
['id ' => 'default ' , 'uri ' => 'mongodb://localhost:27017 ' ],
54
60
],
55
- ]], [
56
- 'profiler ' => new Definition (\stdClass::class),
61
+ ],
62
+ ], [
63
+ 'profiler ' => new Definition (stdClass::class),
57
64
]);
58
65
59
66
$ this ->assertTrue ($ container ->hasDefinition ('mongodb.client.default ' ));
@@ -62,18 +69,17 @@ public function testLoadWithSingleClient(): void
62
69
63
70
// Check service definition
64
71
$ 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));
66
72
$ this ->assertSame ('mongodb://localhost:27017 ' , $ definition ->getArgument ('$uri ' ));
67
73
$ 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 ());
68
79
69
80
// Check alias definition
70
81
$ alias = $ container ->getAlias (Client::class);
71
82
$ 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
83
}
78
84
79
85
public function testLoadWithoutProfiler (): void
@@ -82,7 +88,8 @@ public function testLoadWithoutProfiler(): void
82
88
'clients ' => [
83
89
['id ' => 'default ' , 'uri ' => 'mongodb://localhost:27017 ' ],
84
90
],
85
- ]]);
91
+ ],
92
+ ]);
86
93
87
94
// Check service definition
88
95
$ definition = $ container ->getDefinition ('mongodb.client.default ' );
@@ -109,8 +116,9 @@ public function testLoadWithMultipleClients(): void
109
116
'driverOptions ' => ['serverApi ' => new ServerApi ((string ) ServerApi::V1 )],
110
117
],
111
118
],
112
- ]], [
113
- 'profiler ' => new Definition (\stdClass::class),
119
+ ],
120
+ ], [
121
+ 'profiler ' => new Definition (stdClass::class),
114
122
]);
115
123
116
124
$ this ->assertTrue ($ container ->hasDefinition ('mongodb.client.default ' ));
@@ -120,13 +128,15 @@ public function testLoadWithMultipleClients(): void
120
128
121
129
// Check service definitions
122
130
$ 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 ());
124
133
$ this ->assertSame ('mongodb://localhost:27017 ' , $ definition ->getArgument ('$uri ' ));
125
134
$ this ->assertSame (['readPreference ' => 'primary ' ], $ definition ->getArgument ('$uriOptions ' ));
126
135
$ this ->assertTrue ($ definition ->hasMethodCall ('addSubscriber ' ));
127
136
128
137
$ 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 ());
130
140
$ this ->assertSame ('mongodb://localhost:27018 ' , $ definition ->getArgument ('$uri ' ));
131
141
$ this ->assertEquals (['serverApi ' => new ServerApi ((string ) ServerApi::V1 )], $ definition ->getArgument ('$driverOptions ' ));
132
142
$ this ->assertTrue ($ definition ->hasMethodCall ('addSubscriber ' ));
0 commit comments