@@ -908,19 +908,38 @@ public void TestFindAndModify()
908908 _collection . RemoveAll ( ) ;
909909 _collection . Insert ( new BsonDocument { { "_id" , 1 } , { "priority" , 1 } , { "inprogress" , false } , { "name" , "abc" } } ) ;
910910 _collection . Insert ( new BsonDocument { { "_id" , 2 } , { "priority" , 2 } , { "inprogress" , false } , { "name" , "def" } } ) ;
911+ _collection . Insert ( new BsonDocument { { "_id" , 3 } , { "priority" , 3 } , { "inprogress" , false } , { "name" , "ghi" } } ) ;
911912
912913
913914 var started = DateTime . UtcNow ;
914915 started = started . AddTicks ( - ( started . Ticks % 10000 ) ) ; // adjust for MongoDB DateTime precision
915916 var args = new FindAndModifyArgs
917+ {
918+ BypassDocumentValidation = true ,
919+ Query = Query . EQ ( "inprogress" , false ) ,
920+ SortBy = SortBy . Descending ( "priority" ) ,
921+ Update = Update . Set ( "inprogress" , true ) . Set ( "started" , started )
922+ } ;
923+ var result = _collection . FindAndModify ( args ) ;
924+
925+ Assert . True ( result . Ok ) ;
926+ Assert . Equal ( 3 , result . ModifiedDocument [ "_id" ] . AsInt32 ) ;
927+ Assert . Equal ( 3 , result . ModifiedDocument [ "priority" ] . AsInt32 ) ;
928+ Assert . Equal ( false , result . ModifiedDocument [ "inprogress" ] . AsBoolean ) ;
929+ Assert . Equal ( "ghi" , result . ModifiedDocument [ "name" ] . AsString ) ;
930+ Assert . False ( result . ModifiedDocument . Contains ( "started" ) ) ;
931+
932+ started = DateTime . UtcNow ;
933+ started = started . AddTicks ( - ( started . Ticks % 10000 ) ) ; // adjust for MongoDB DateTime precision
934+ args = new FindAndModifyArgs
916935 {
917936 BypassDocumentValidation = true ,
918937 Query = Query . EQ ( "inprogress" , false ) ,
919938 SortBy = SortBy . Descending ( "priority" ) ,
920939 Update = Update . Set ( "inprogress" , true ) . Set ( "started" , started ) ,
921940 VersionReturned = FindAndModifyDocumentVersion . Original
922941 } ;
923- var result = _collection . FindAndModify ( args ) ;
942+ result = _collection . FindAndModify ( args ) ;
924943
925944 Assert . True ( result . Ok ) ;
926945 Assert . Equal ( 2 , result . ModifiedDocument [ "_id" ] . AsInt32 ) ;
0 commit comments