@@ -550,6 +550,46 @@ async def test_returns_error_if_auto_encryption_configured(self):
550
550
"bulk_write does not currently support automatic encryption" , context .exception ._message
551
551
)
552
552
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
+
553
593
554
594
# https://github.com/mongodb/specifications/blob/master/source/client-side-operations-timeout/tests/README.md#11-multi-batch-bulkwrites
555
595
class TestClientBulkWriteCSOT (AsyncIntegrationTest ):
0 commit comments