@@ -5788,4 +5788,62 @@ public function testUpsertDateOperations(): void
57885788 $ database ->setPreserveDates (false );
57895789 $ database ->deleteCollection ($ collection );
57905790 }
5791+
5792+ public function testUpdateDocumentsCount (): void
5793+ {
5794+ /** @var Database $database */
5795+ $ database = static ::getDatabase ();
5796+
5797+ if (!$ database ->getAdapter ()->getSupportForUpserts ()) {
5798+ return ;
5799+ }
5800+
5801+ $ collectionName = "update_count " ;
5802+ $ database ->createCollection ($ collectionName );
5803+
5804+ $ database ->createAttribute ($ collectionName , 'key ' , Database::VAR_STRING , 60 , false );
5805+ $ database ->createAttribute ($ collectionName , 'value ' , Database::VAR_STRING , 60 , false );
5806+
5807+ $ permissions = [Permission::read (Role::any ()), Permission::write (Role::any ()),Permission::update (Role::any ())];
5808+
5809+ $ docs = [
5810+ new Document ([
5811+ '$id ' => 'bulk_upsert1 ' ,
5812+ '$permissions ' => $ permissions ,
5813+ 'key ' => 'bulk_upsert1_initial ' ,
5814+ ]),
5815+ new Document ([
5816+ '$id ' => 'bulk_upsert2 ' ,
5817+ '$permissions ' => $ permissions ,
5818+ 'key ' => 'bulk_upsert2_initial ' ,
5819+ ]),
5820+ new Document ([
5821+ '$id ' => 'bulk_upsert3 ' ,
5822+ '$permissions ' => $ permissions ,
5823+ 'key ' => 'bulk_upsert3_initial ' ,
5824+ ]),
5825+ new Document ([
5826+ '$id ' => 'bulk_upsert4 ' ,
5827+ '$permissions ' => $ permissions ,
5828+ 'key ' => 'bulk_upsert4_initial '
5829+ ])
5830+ ];
5831+ $ upsertUpdateResults = [];
5832+ $ count = $ database ->createOrUpdateDocuments ($ collectionName , $ docs , onNext: function ($ doc ) use (&$ upsertUpdateResults ) {
5833+ $ upsertUpdateResults [] = $ doc ;
5834+ });
5835+ $ this ->assertCount (4 , $ upsertUpdateResults );
5836+ $ this ->assertEquals (4 , $ count );
5837+
5838+ $ updates = new Document (['value ' => 'test ' ]);
5839+ $ newDocs = [];
5840+ $ count = $ database ->updateDocuments ($ collectionName , $ updates , onNext:function ($ doc ) use (&$ newDocs ) {
5841+ $ newDocs [] = $ doc ;
5842+ });
5843+
5844+ $ this ->assertCount (4 , $ newDocs );
5845+ $ this ->assertEquals (4 , $ count );
5846+
5847+ $ database ->deleteCollection ($ collectionName );
5848+ }
57915849}
0 commit comments