@@ -550,6 +550,46 @@ async def test_returns_error_if_auto_encryption_configured(self):
550550 "bulk_write does not currently support automatic encryption" , context .exception ._message
551551 )
552552
553+ @async_client_context .require_version_min (8 , 0 , 0 , - 24 )
554+ @async_client_context .require_no_serverless
555+ async def test_upserted_result (self ):
556+ client = await self .async_rs_or_single_client ()
557+
558+ collection = client .db ["coll" ]
559+ self .addAsyncCleanup (collection .drop )
560+ await collection .drop ()
561+
562+ models = []
563+ models .append (
564+ UpdateOne (
565+ namespace = "db.coll" ,
566+ filter = {"_id" : "a" },
567+ update = {"$set" : {"x" : 1 }},
568+ upsert = True ,
569+ )
570+ )
571+ models .append (
572+ UpdateOne (
573+ namespace = "db.coll" ,
574+ filter = {"_id" : None },
575+ update = {"$set" : {"x" : 1 }},
576+ upsert = True ,
577+ )
578+ )
579+ models .append (
580+ UpdateOne (
581+ namespace = "db.coll" ,
582+ filter = {"_id" : None },
583+ update = {"$set" : {"x" : 1 }},
584+ )
585+ )
586+ result = await client .bulk_write (models = models , verbose_results = True )
587+
588+ self .assertEqual (result .upserted_count , 2 )
589+ self .assertEqual (result .update_results [0 ].did_upsert , True )
590+ self .assertEqual (result .update_results [1 ].did_upsert , True )
591+ self .assertEqual (result .update_results [2 ].did_upsert , False )
592+
553593
554594# https://github.com/mongodb/specifications/blob/master/source/client-side-operations-timeout/tests/README.md#11-multi-batch-bulkwrites
555595class TestClientBulkWriteCSOT (AsyncIntegrationTest ):
0 commit comments