21
21
use function call_user_func ;
22
22
use function is_scalar ;
23
23
use function json_encode ;
24
- use function strchr ;
24
+ use function str_contains ;
25
25
use function usort ;
26
26
use function version_compare ;
27
27
@@ -434,16 +434,30 @@ public function testMapReduce(): void
434
434
public function collectionMethodClosures ()
435
435
{
436
436
return [
437
- [
437
+ ' read-only aggregate ' => [
438
438
function ($ collection , $ session , $ options = []): void {
439
439
$ collection ->aggregate (
440
440
[['$match ' => ['_id ' => ['$lt ' => 3 ]]]],
441
441
['session ' => $ session ] + $ options
442
442
);
443
+ }, 'r ' ,
444
+ ],
445
+
446
+ /* Disabled, as write aggregations are not supported in transactions
447
+ 'read-write aggregate' => [
448
+ function ($collection, $session, $options = []): void {
449
+ $collection->aggregate(
450
+ [
451
+ ['$match' => ['_id' => ['$lt' => 3]]],
452
+ ['$merge' => $collection . '_out'],
453
+ ],
454
+ ['session' => $session] + $options
455
+ );
443
456
}, 'rw',
444
457
],
458
+ */
445
459
446
- [
460
+ ' bulkWrite insertOne ' => [
447
461
function ($ collection , $ session , $ options = []): void {
448
462
$ collection ->bulkWrite (
449
463
[['insertOne ' => [['test ' => 'foo ' ]]]],
@@ -453,7 +467,7 @@ function ($collection, $session, $options = []): void {
453
467
],
454
468
455
469
/* Disabled, as count command can't be used in transactions
456
- [
470
+ 'count' => [
457
471
function($collection, $session, $options = []) {
458
472
$collection->count(
459
473
[],
@@ -463,7 +477,7 @@ function($collection, $session, $options = []) {
463
477
],
464
478
*/
465
479
466
- [
480
+ ' countDocuments ' => [
467
481
function ($ collection , $ session , $ options = []): void {
468
482
$ collection ->countDocuments (
469
483
[],
@@ -473,7 +487,7 @@ function ($collection, $session, $options = []): void {
473
487
],
474
488
475
489
/* Disabled, as it's illegal to use createIndex command in transactions
476
- [
490
+ 'createIndex' => [
477
491
function($collection, $session, $options = []) {
478
492
$collection->createIndex(
479
493
['test' => 1],
@@ -483,7 +497,7 @@ function($collection, $session, $options = []) {
483
497
],
484
498
*/
485
499
486
- [
500
+ ' deleteMany ' => [
487
501
function ($ collection , $ session , $ options = []): void {
488
502
$ collection ->deleteMany (
489
503
['test ' => 'foo ' ],
@@ -492,7 +506,7 @@ function ($collection, $session, $options = []): void {
492
506
}, 'w ' ,
493
507
],
494
508
495
- [
509
+ ' deleteOne ' => [
496
510
function ($ collection , $ session , $ options = []): void {
497
511
$ collection ->deleteOne (
498
512
['test ' => 'foo ' ],
@@ -501,7 +515,7 @@ function ($collection, $session, $options = []): void {
501
515
}, 'w ' ,
502
516
],
503
517
504
- [
518
+ ' distinct ' => [
505
519
function ($ collection , $ session , $ options = []): void {
506
520
$ collection ->distinct (
507
521
'_id ' ,
@@ -512,7 +526,7 @@ function ($collection, $session, $options = []): void {
512
526
],
513
527
514
528
/* Disabled, as it's illegal to use drop command in transactions
515
- [
529
+ 'drop' => [
516
530
function($collection, $session, $options = []) {
517
531
$collection->drop(
518
532
['session' => $session] + $options
@@ -522,7 +536,7 @@ function($collection, $session, $options = []) {
522
536
*/
523
537
524
538
/* Disabled, as it's illegal to use dropIndexes command in transactions
525
- [
539
+ 'dropIndex' => [
526
540
function($collection, $session, $options = []) {
527
541
$collection->dropIndex(
528
542
'_id_1',
@@ -532,7 +546,7 @@ function($collection, $session, $options = []) {
532
546
], */
533
547
534
548
/* Disabled, as it's illegal to use dropIndexes command in transactions
535
- [
549
+ 'dropIndexes' => [
536
550
function($collection, $session, $options = []) {
537
551
$collection->dropIndexes(
538
552
['session' => $session] + $options
@@ -542,7 +556,7 @@ function($collection, $session, $options = []) {
542
556
*/
543
557
544
558
/* Disabled, as count command can't be used in transactions
545
- [
559
+ 'estimatedDocumentCount' => [
546
560
function($collection, $session, $options = []) {
547
561
$collection->estimatedDocumentCount(
548
562
['session' => $session] + $options
@@ -551,7 +565,7 @@ function($collection, $session, $options = []) {
551
565
],
552
566
*/
553
567
554
- [
568
+ ' find ' => [
555
569
function ($ collection , $ session , $ options = []): void {
556
570
$ collection ->find (
557
571
['test ' => 'foo ' ],
@@ -560,7 +574,7 @@ function ($collection, $session, $options = []): void {
560
574
}, 'r ' ,
561
575
],
562
576
563
- [
577
+ ' findOne ' => [
564
578
function ($ collection , $ session , $ options = []): void {
565
579
$ collection ->findOne (
566
580
['test ' => 'foo ' ],
@@ -569,7 +583,7 @@ function ($collection, $session, $options = []): void {
569
583
}, 'r ' ,
570
584
],
571
585
572
- [
586
+ ' findOneAndDelete ' => [
573
587
function ($ collection , $ session , $ options = []): void {
574
588
$ collection ->findOneAndDelete (
575
589
['test ' => 'foo ' ],
@@ -578,7 +592,7 @@ function ($collection, $session, $options = []): void {
578
592
}, 'w ' ,
579
593
],
580
594
581
- [
595
+ ' findOneAndReplace ' => [
582
596
function ($ collection , $ session , $ options = []): void {
583
597
$ collection ->findOneAndReplace (
584
598
['test ' => 'foo ' ],
@@ -588,7 +602,7 @@ function ($collection, $session, $options = []): void {
588
602
}, 'w ' ,
589
603
],
590
604
591
- [
605
+ ' findOneAndUpdate ' => [
592
606
function ($ collection , $ session , $ options = []): void {
593
607
$ collection ->findOneAndUpdate (
594
608
['test ' => 'foo ' ],
@@ -598,7 +612,7 @@ function ($collection, $session, $options = []): void {
598
612
}, 'w ' ,
599
613
],
600
614
601
- [
615
+ ' insertMany ' => [
602
616
function ($ collection , $ session , $ options = []): void {
603
617
$ collection ->insertMany (
604
618
[
@@ -610,7 +624,7 @@ function ($collection, $session, $options = []): void {
610
624
}, 'w ' ,
611
625
],
612
626
613
- [
627
+ ' insertOne ' => [
614
628
function ($ collection , $ session , $ options = []): void {
615
629
$ collection ->insertOne (
616
630
['test ' => 'foo ' ],
@@ -620,7 +634,7 @@ function ($collection, $session, $options = []): void {
620
634
],
621
635
622
636
/* Disabled, as it's illegal to use listIndexes command in transactions
623
- [
637
+ 'listIndexes' => [
624
638
function($collection, $session, $options = []) {
625
639
$collection->listIndexes(
626
640
['session' => $session] + $options
@@ -630,7 +644,7 @@ function($collection, $session, $options = []) {
630
644
*/
631
645
632
646
/* Disabled, as it's illegal to use mapReduce command in transactions
633
- [
647
+ 'mapReduce' => [
634
648
function($collection, $session, $options = []) {
635
649
$collection->mapReduce(
636
650
new \MongoDB\BSON\Javascript('function() { emit(this.state, this.pop); }'),
@@ -642,7 +656,7 @@ function($collection, $session, $options = []) {
642
656
],
643
657
*/
644
658
645
- [
659
+ ' replaceOne ' => [
646
660
function ($ collection , $ session , $ options = []): void {
647
661
$ collection ->replaceOne (
648
662
['test ' => 'foo ' ],
@@ -652,7 +666,7 @@ function ($collection, $session, $options = []): void {
652
666
}, 'w ' ,
653
667
],
654
668
655
- [
669
+ ' updateMany ' => [
656
670
function ($ collection , $ session , $ options = []): void {
657
671
$ collection ->updateMany (
658
672
['test ' => 'foo ' ],
@@ -662,7 +676,7 @@ function ($collection, $session, $options = []): void {
662
676
}, 'w ' ,
663
677
],
664
678
665
- [
679
+ ' updateOne ' => [
666
680
function ($ collection , $ session , $ options = []): void {
667
681
$ collection ->updateOne (
668
682
['test ' => 'foo ' ],
@@ -673,7 +687,7 @@ function ($collection, $session, $options = []): void {
673
687
],
674
688
675
689
/* Disabled, as it's illegal to use change streams in transactions
676
- [
690
+ 'watch' => [
677
691
function($collection, $session, $options = []) {
678
692
$collection->watch(
679
693
[],
@@ -685,32 +699,28 @@ function($collection, $session, $options = []) {
685
699
];
686
700
}
687
701
688
- public function collectionReadMethodClosures ()
702
+ public function collectionReadMethodClosures (): array
689
703
{
690
704
return array_filter (
691
705
$ this ->collectionMethodClosures (),
692
706
function ($ rw ) {
693
- if (strchr ($ rw [1 ], 'r ' ) !== false ) {
694
- return true ;
695
- }
707
+ return str_contains ($ rw [1 ], 'r ' );
696
708
}
697
709
);
698
710
}
699
711
700
- public function collectionWriteMethodClosures ()
712
+ public function collectionWriteMethodClosures (): array
701
713
{
702
714
return array_filter (
703
715
$ this ->collectionMethodClosures (),
704
716
function ($ rw ) {
705
- if (strchr ($ rw [1 ], 'w ' ) !== false ) {
706
- return true ;
707
- }
717
+ return str_contains ($ rw [1 ], 'w ' );
708
718
}
709
719
);
710
720
}
711
721
712
722
/** @dataProvider collectionMethodClosures */
713
- public function testMethodDoesNotInheritReadWriteConcernInTranasaction (Closure $ method ): void
723
+ public function testMethodDoesNotInheritReadWriteConcernInTransaction (Closure $ method ): void
714
724
{
715
725
$ this ->skipIfTransactionsAreNotSupported ();
716
726
0 commit comments