1010use MongoDB \Laravel \Tests \TestCase ;
1111
1212use function json_encode ;
13+ use function ob_get_flush ;
14+ use function ob_start ;
1315
1416use const JSON_PRETTY_PRINT ;
17+ use const PHP_EOL ;
1518
1619class ReadOperationsTest extends TestCase
1720{
@@ -194,6 +197,10 @@ public function testReadPreference(): void
194197 */
195198 public function testQueryLog (): void
196199 {
200+ $ output = '' ;
201+ ob_start (function (string $ buffer ) use (&$ output ) {
202+ $ output .= $ buffer ;
203+ });
197204 // start-query-log
198205 DB ::connection ('mongodb ' )->enableQueryLog ();
199206
@@ -203,28 +210,17 @@ public function testQueryLog(): void
203210
204211 $ logs = DB ::connection ('mongodb ' )->getQueryLog ();
205212 foreach ($ logs as $ log ) {
206- echo json_encode ($ log , JSON_PRETTY_PRINT );
213+ echo json_encode ($ log , JSON_PRETTY_PRINT ) . PHP_EOL ;
207214 }
208215
209216 // end-query-log
210-
217+ $ output = ob_get_flush ();
211218 $ this ->assertNotNull ($ logs );
212- $ this ->expectOutputRegex ('/^ '
213- . '\{ '
214- . '\s*"query"\s*:\s*"\{ \\\"find \\\"\s*:\s* \\\"movies \\\",\s* \\\"filter \\\"\s*:\s*\{ \\\"title \\\"\s*:\s* \\\"Carrie \\\"\}\}", '
215- . '\s*"bindings"\s*:\s*\[\], '
216- . '\s*"time"\s*:\s*\d+ '
217- . '\} '
218- . '\{ '
219- . '\s*"query"\s*:\s*"\{ \\\"find \\\"\s*:\s* \\\"movies \\\",\s* \\\"filter \\\"\s*:\s*\{ \\\"year \\\"\s*:\s*\{ \\\" \\$lt \\\"\s*:\s*\{ \\\" \\$numberInt \\\"\s*:\s* \\\"2005 \\\"\}\}\}\}", '
220- . '\s*"bindings"\s*:\s*\[\], '
221- . '\s*"time"\s*:\s*\d+ '
222- . '\} '
223- . '\{ '
224- . '\s*"query"\s*:\s*"\{ \\\"find \\\"\s*:\s* \\\"movies \\\",\s* \\\"filter \\\"\s*:\s*\{ \\\"imdb.rating \\\"\s*:\s*\{ \\\" \\$gt \\\"\s*:\s*\{ \\\" \\$numberDouble \\\"\s*:\s* \\\"8\.5 \\\"\}\}\}\}", '
225- . '\s*"bindings"\s*:\s*\[\], '
226- . '\s*"time"\s*:\s*\d+ '
227- . '\} '
228- . '$/x ' );
219+ $ this ->assertNotEmpty ($ output );
220+
221+ $ this ->assertStringContainsString ('"query": "{ \"find\" : \"movies\", \"filter\" : { \"title\" : \"Carrie\" } }" ' , $ output );
222+ $ this ->assertStringContainsString ('"query": "{ \"find\" : \"movies\", \"filter\" : { \"imdb.rating\" : { \"$gt\" : { \"$numberDouble\" : \"8.5\" } } } }" ' , $ output );
223+ $ this ->assertStringContainsString ('"query": "{ \"find\" : \"movies\", \"filter\" : { \"imdb.rating\" : { \"$gt\" : { \"$numberDouble\" : \"8.5\" } } } }" ' , $ output );
224+ $ this ->assertMatchesRegularExpression ('/"time": \d+/ ' , $ output );
229225 }
230226}
0 commit comments