9
9
use MongoDB \Operation \Find ;
10
10
use MongoDB \Operation \MapReduce ;
11
11
use MongoDB \Tests \CommandObserver ;
12
+ use function is_object ;
12
13
use function iterator_to_array ;
14
+ use function usort ;
13
15
use function version_compare ;
14
16
15
17
class MapReduceFunctionalTest extends FunctionalTestCase
@@ -237,7 +239,7 @@ public function testTypeMapOptionWithInlineResults(array $typeMap = null, array
237
239
$ operation = new MapReduce ($ this ->getDatabaseName (), $ this ->getCollectionName (), $ map , $ reduce , $ out , ['typeMap ' => $ typeMap ]);
238
240
$ results = iterator_to_array ($ operation ->execute ($ this ->getPrimaryServer ()));
239
241
240
- $ this ->assertEquals ($ expectedDocuments , $ results );
242
+ $ this ->assertEquals ($ this -> sortResults ( $ expectedDocuments) , $ this -> sortResults ( $ results) );
241
243
}
242
244
243
245
public function provideTypeMapOptionsAndExpectedDocuments ()
@@ -284,12 +286,12 @@ public function testTypeMapOptionWithOutputCollection(array $typeMap = null, arr
284
286
$ operation = new MapReduce ($ this ->getDatabaseName (), $ this ->getCollectionName (), $ map , $ reduce , $ out , ['typeMap ' => $ typeMap ]);
285
287
$ results = iterator_to_array ($ operation ->execute ($ this ->getPrimaryServer ()));
286
288
287
- $ this ->assertEquals ($ expectedDocuments , $ results );
289
+ $ this ->assertEquals ($ this -> sortResults ( $ expectedDocuments) , $ this -> sortResults ( $ results) );
288
290
289
291
$ operation = new Find ($ this ->getDatabaseName (), $ out , [], ['typeMap ' => $ typeMap ]);
290
292
$ cursor = $ operation ->execute ($ this ->getPrimaryServer ());
291
293
292
- $ this ->assertEquals ($ expectedDocuments, iterator_to_array ($ cursor ));
294
+ $ this ->assertEquals ($ this -> sortResults ( $ expectedDocuments), $ this -> sortResults ( iterator_to_array ($ cursor) ));
293
295
294
296
$ operation = new DropCollection ($ this ->getDatabaseName (), $ out );
295
297
$ operation ->execute ($ this ->getPrimaryServer ());
@@ -313,4 +315,19 @@ private function createFixtures($n)
313
315
314
316
$ this ->assertEquals ($ n * 2 , $ result ->getInsertedCount ());
315
317
}
318
+
319
+ private function sortResults (array $ results ) : array
320
+ {
321
+ $ sortFunction = static function ($ resultA , $ resultB ) : int {
322
+ $ idA = is_object ($ resultA ) ? $ resultA ->_id : $ resultA ['_id ' ];
323
+ $ idB = is_object ($ resultB ) ? $ resultB ->_id : $ resultB ['_id ' ];
324
+
325
+ return $ idA <=> $ idB ;
326
+ };
327
+
328
+ $ sortedResults = $ results ;
329
+ usort ($ sortedResults , $ sortFunction );
330
+
331
+ return $ sortedResults ;
332
+ }
316
333
}
0 commit comments