12
12
namespace Symfony \Bridge \Doctrine \Tests \DataCollector ;
13
13
14
14
use Doctrine \DBAL \Connection ;
15
- use Doctrine \DBAL \Logging \DebugStack ;
16
15
use Doctrine \DBAL \ParameterType ;
17
16
use Doctrine \DBAL \Platforms \MySQLPlatform ;
18
17
use Doctrine \Persistence \ManagerRegistry ;
29
28
// Doctrine DBAL 2 compatibility
30
29
class_exists (\Doctrine \DBAL \Platforms \MySqlPlatform::class);
31
30
32
- /**
33
- * @group legacy
34
- */
35
31
class DoctrineDataCollectorTest extends TestCase
36
32
{
33
+ use DoctrineDataCollectorTestTrait;
34
+
37
35
protected function setUp (): void
38
36
{
39
37
ClockMock::register (self ::class);
40
38
ClockMock::withClockMock (1500000000 );
41
39
}
42
40
43
- public function provideDataHolder (): array
44
- {
45
- return [
46
- 'with debug stack ' => [false ],
47
- 'with debug data holder ' => [true ],
48
- ];
49
- }
50
-
51
- /**
52
- * @dataProvider provideDataHolder
53
- */
54
- public function testCollectConnections (bool $ useDebugDataHolder )
55
- {
56
- $ c = $ this ->createCollector ([], $ useDebugDataHolder );
57
- $ c ->collect (new Request (), new Response ());
58
- $ c = unserialize (serialize ($ c ));
59
- $ this ->assertEquals (['default ' => 'doctrine.dbal.default_connection ' ], $ c ->getConnections ());
60
- }
61
-
62
- /**
63
- * @dataProvider provideDataHolder
64
- */
65
- public function testCollectManagers (bool $ useDebugDataHolder )
66
- {
67
- $ c = $ this ->createCollector ([], $ useDebugDataHolder );
68
- $ c ->collect (new Request (), new Response ());
69
- $ c = unserialize (serialize ($ c ));
70
- $ this ->assertEquals (['default ' => 'doctrine.orm.default_entity_manager ' ], $ c ->getManagers ());
71
- }
72
-
73
- /**
74
- * @dataProvider provideDataHolder
75
- */
76
- public function testCollectQueryCount (bool $ useDebugDataHolder )
77
- {
78
- $ c = $ this ->createCollector ([], $ useDebugDataHolder );
79
- $ c ->collect (new Request (), new Response ());
80
- $ c = unserialize (serialize ($ c ));
81
- $ this ->assertEquals (0 , $ c ->getQueryCount ());
82
-
83
- $ queries = [
84
- ['sql ' => 'SELECT * FROM table1 ' , 'params ' => [], 'types ' => [], 'executionMS ' => 0 ],
85
- ];
86
- $ c = $ this ->createCollector ($ queries , $ useDebugDataHolder );
87
- $ c ->collect (new Request (), new Response ());
88
- $ c = unserialize (serialize ($ c ));
89
- $ this ->assertEquals (1 , $ c ->getQueryCount ());
90
- }
91
-
92
- /**
93
- * @dataProvider provideDataHolder
94
- */
95
- public function testCollectTime (bool $ useDebugDataHolder )
41
+ public function testReset ()
96
42
{
97
- $ c = $ this ->createCollector ([], $ useDebugDataHolder );
98
- $ c ->collect (new Request (), new Response ());
99
- $ c = unserialize (serialize ($ c ));
100
- $ this ->assertEquals (0 , $ c ->getTime ());
101
-
102
43
$ queries = [
103
44
['sql ' => 'SELECT * FROM table1 ' , 'params ' => [], 'types ' => [], 'executionMS ' => 1 ],
104
45
];
105
46
$ c = $ this ->createCollector ($ queries );
106
47
$ c ->collect (new Request (), new Response ());
107
- $ c = unserialize (serialize ($ c ));
108
- $ this ->assertEquals (1 , $ c ->getTime ());
109
48
110
- $ queries = [
111
- ['sql ' => 'SELECT * FROM table1 ' , 'params ' => [], 'types ' => [], 'executionMS ' => 1 ],
112
- ['sql ' => 'SELECT * FROM table2 ' , 'params ' => [], 'types ' => [], 'executionMS ' => 2 ],
113
- ];
114
- $ c = $ this ->createCollector ($ queries , $ useDebugDataHolder );
49
+ $ c ->reset ();
115
50
$ c ->collect (new Request (), new Response ());
116
51
$ c = unserialize (serialize ($ c ));
117
- $ this ->assertEquals (3 , $ c ->getTime ());
52
+
53
+ $ this ->assertEquals ([], $ c ->getQueries ());
118
54
}
119
55
120
56
/**
121
57
* @dataProvider paramProvider
122
58
*/
123
- public function testCollectQueries ($ param , $ types , $ expected, $ explainable , bool $ runnable = true , bool $ useDebugDataHolder = false )
59
+ public function testCollectQueries ($ param , $ types , $ expected )
124
60
{
125
61
$ queries = [
126
62
['sql ' => 'SELECT * FROM table1 WHERE field1 = ?1 ' , 'params ' => [$ param ], 'types ' => $ types , 'executionMS ' => 1 ],
127
63
];
128
- $ c = $ this ->createCollector ($ queries, $ useDebugDataHolder );
64
+ $ c = $ this ->createCollector ($ queries );
129
65
$ c ->collect (new Request (), new Response ());
130
66
$ c = unserialize (serialize ($ c ));
131
67
@@ -143,20 +79,17 @@ public function testCollectQueries($param, $types, $expected, $explainable, bool
143
79
$ this ->assertEquals ($ expected , $ collectedParam );
144
80
}
145
81
146
- $ this ->assertEquals ( $ explainable , $ collectedQueries ['default ' ][0 ]['explainable ' ]);
147
- $ this ->assertSame ( $ runnable , $ collectedQueries ['default ' ][0 ]['runnable ' ]);
82
+ $ this ->assertTrue ( $ collectedQueries ['default ' ][0 ]['explainable ' ]);
83
+ $ this ->assertTrue ( $ collectedQueries ['default ' ][0 ]['runnable ' ]);
148
84
}
149
85
150
- /**
151
- * @dataProvider provideDataHolder
152
- */
153
- public function testCollectQueryWithNoParams (bool $ useDebugDataHolder )
86
+ public function testCollectQueryWithNoParams ()
154
87
{
155
88
$ queries = [
156
89
['sql ' => 'SELECT * FROM table1 ' , 'params ' => [], 'types ' => [], 'executionMS ' => 1 ],
157
90
['sql ' => 'SELECT * FROM table1 ' , 'params ' => null , 'types ' => null , 'executionMS ' => 1 ],
158
91
];
159
- $ c = $ this ->createCollector ($ queries, $ useDebugDataHolder );
92
+ $ c = $ this ->createCollector ($ queries );
160
93
$ c ->collect (new Request (), new Response ());
161
94
$ c = unserialize (serialize ($ c ));
162
95
@@ -171,49 +104,15 @@ public function testCollectQueryWithNoParams(bool $useDebugDataHolder)
171
104
$ this ->assertTrue ($ collectedQueries ['default ' ][1 ]['runnable ' ]);
172
105
}
173
106
174
- /**
175
- * @dataProvider provideDataHolder
176
- */
177
- public function testCollectQueryWithNoTypes (bool $ useDebugDataHolder )
178
- {
179
- $ queries = [
180
- ['sql ' => 'SET sql_mode=(SELECT REPLACE(@@sql_mode, \'ONLY_FULL_GROUP_BY \', \'\')) ' , 'params ' => [], 'types ' => null , 'executionMS ' => 1 ],
181
- ];
182
- $ c = $ this ->createCollector ($ queries , $ useDebugDataHolder );
183
- $ c ->collect (new Request (), new Response ());
184
- $ c = unserialize (serialize ($ c ));
185
-
186
- $ collectedQueries = $ c ->getQueries ();
187
- $ this ->assertSame ([], $ collectedQueries ['default ' ][0 ]['types ' ]);
188
- }
189
-
190
- /**
191
- * @dataProvider provideDataHolder
192
- */
193
- public function testReset (bool $ useDebugDataHolder )
194
- {
195
- $ queries = [
196
- ['sql ' => 'SELECT * FROM table1 ' , 'params ' => [], 'types ' => [], 'executionMS ' => 1 ],
197
- ];
198
- $ c = $ this ->createCollector ($ queries , $ useDebugDataHolder );
199
- $ c ->collect (new Request (), new Response ());
200
-
201
- $ c ->reset ();
202
- $ c ->collect (new Request (), new Response ());
203
- $ c = unserialize (serialize ($ c ));
204
-
205
- $ this ->assertEquals ($ useDebugDataHolder ? [] : ['default ' => []], $ c ->getQueries ());
206
- }
207
-
208
107
/**
209
108
* @dataProvider paramProvider
210
109
*/
211
- public function testSerialization ($ param , array $ types , $ expected, $ explainable , bool $ runnable = true , bool $ useDebugDataHolder = false )
110
+ public function testSerialization ($ param , array $ types , $ expected )
212
111
{
213
112
$ queries = [
214
113
['sql ' => 'SELECT * FROM table1 WHERE field1 = ?1 ' , 'params ' => [$ param ], 'types ' => $ types , 'executionMS ' => 1 ],
215
114
];
216
- $ c = $ this ->createCollector ($ queries, $ useDebugDataHolder );
115
+ $ c = $ this ->createCollector ($ queries );
217
116
$ c ->collect (new Request (), new Response ());
218
117
$ c = unserialize (serialize ($ c ));
219
118
@@ -231,63 +130,21 @@ public function testSerialization($param, array $types, $expected, $explainable,
231
130
$ this ->assertEquals ($ expected , $ collectedParam );
232
131
}
233
132
234
- $ this ->assertEquals ( $ explainable , $ collectedQueries ['default ' ][0 ]['explainable ' ]);
235
- $ this ->assertSame ( $ runnable , $ collectedQueries ['default ' ][0 ]['runnable ' ]);
133
+ $ this ->assertTrue ( $ collectedQueries ['default ' ][0 ]['explainable ' ]);
134
+ $ this ->assertTrue ( $ collectedQueries ['default ' ][0 ]['runnable ' ]);
236
135
}
237
136
238
137
public function paramProvider (): array
239
138
{
240
139
return [
241
- ['some value ' , [], 'some value ' , true ],
242
- ['some value ' , [], 'some value ' , true , true , true ],
243
- [1 , [], 1 , true ],
244
- [1 , [], 1 , true , true , true ],
245
- [true , [], true , true ],
246
- [true , [], true , true , true , true ],
247
- [null , [], null , true ],
248
- [null , [], null , true , true , true ],
249
- [new \DateTime ('2011-09-11 ' ), ['date ' ], '2011-09-11 ' , true ],
250
- [fopen (__FILE__ , 'r ' ), [], '/* Resource(stream) */ ' , false , false ],
251
- [
252
- new \stdClass (),
253
- [],
254
- <<<EOTXT
255
- {#%d
256
- ⚠: "Object of class "stdClass" could not be converted to string."
257
- }
258
- EOTXT
259
- ,
260
- false ,
261
- false ,
262
- ],
263
- [
264
- new StringRepresentableClass (),
265
- [],
266
- <<<EOTXT
267
- Symfony\Bridge\Doctrine\Tests\DataCollector\StringRepresentableClass {#%d
268
- __toString(): "string representation"
269
- }
270
- EOTXT
271
- ,
272
- false ,
273
- ],
274
- ['this is not a date ' , ['date ' ], "⚠ Could not convert PHP value 'this is not a date'%S to type %Sdate%S. Expected one of the following types: null, DateTime " , false , false ],
275
- [
276
- new \stdClass (),
277
- ['date ' ],
278
- <<<EOTXT
279
- {#%d
280
- ⚠: "Could not convert PHP value of type %SstdClass%S to type %Sdate%S. Expected one of the following types: null, DateTime"
281
- }
282
- EOTXT
283
- ,
284
- false ,
285
- false ,
286
- ],
140
+ ['some value ' , [], 'some value ' ],
141
+ [1 , [], 1 ],
142
+ [true , [], true ],
143
+ [null , [], null ],
287
144
];
288
145
}
289
146
290
- private function createCollector (array $ queries, bool $ useDebugDataHolder = false ): DoctrineDataCollector
147
+ private function createCollector (array $ queries ): DoctrineDataCollector
291
148
{
292
149
$ connection = $ this ->getMockBuilder (Connection::class)
293
150
->disableOriginalConstructor ()
@@ -309,43 +166,28 @@ private function createCollector(array $queries, bool $useDebugDataHolder = fals
309
166
->method ('getConnection ' )
310
167
->willReturn ($ connection );
311
168
312
- if ($ useDebugDataHolder ) {
313
- $ debugDataHolder = new DebugDataHolder ();
314
- $ collector = new DoctrineDataCollector ($ registry , $ debugDataHolder );
315
- foreach ($ queries as $ queryData ) {
316
- $ query = new Query ($ queryData ['sql ' ] ?? '' );
317
- foreach (($ queryData ['params ' ] ?? []) as $ key => $ value ) {
318
- if (\is_int ($ key )) {
319
- ++$ key ;
320
- }
321
-
322
- $ query ->setValue ($ key , $ value , $ queryData ['type ' ][$ key ] ?? ParameterType::STRING );
169
+ $ debugDataHolder = new DebugDataHolder ();
170
+ $ collector = new DoctrineDataCollector ($ registry , $ debugDataHolder );
171
+ foreach ($ queries as $ queryData ) {
172
+ $ query = new Query ($ queryData ['sql ' ] ?? '' );
173
+ foreach (($ queryData ['params ' ] ?? []) as $ key => $ value ) {
174
+ if (\is_int ($ key )) {
175
+ ++$ key ;
323
176
}
324
177
325
- $ query ->start ();
178
+ $ query ->setValue ($ key , $ value , $ queryData ['type ' ][$ key ] ?? ParameterType::STRING );
179
+ }
180
+
181
+ $ query ->start ();
326
182
327
- $ debugDataHolder ->addQuery ('default ' , $ query );
183
+ $ debugDataHolder ->addQuery ('default ' , $ query );
328
184
329
- if (isset ($ queryData ['executionMS ' ])) {
330
- sleep ($ queryData ['executionMS ' ]);
331
- }
332
- $ query ->stop ();
185
+ if (isset ($ queryData ['executionMS ' ])) {
186
+ sleep ($ queryData ['executionMS ' ]);
333
187
}
334
- } else {
335
- $ collector = new DoctrineDataCollector ($ registry );
336
- $ logger = $ this ->createMock (DebugStack::class);
337
- $ logger ->queries = $ queries ;
338
- $ collector ->addLogger ('default ' , $ logger );
188
+ $ query ->stop ();
339
189
}
340
190
341
191
return $ collector ;
342
192
}
343
193
}
344
-
345
- class StringRepresentableClass
346
- {
347
- public function __toString (): string
348
- {
349
- return 'string representation ' ;
350
- }
351
- }
0 commit comments