@@ -6522,7 +6522,7 @@ describe('Model', function() {
65226522 } ) ;
65236523
65246524 describe ( 'bulkSave() (gh-9673)' , function ( ) {
6525- it ( 'saves new documents' , async function ( ) {
6525+ it ( 'saves new documents' , async function ( ) {
65266526
65276527 const userSchema = new Schema ( {
65286528 name : { type : String }
@@ -6545,7 +6545,77 @@ describe('Model', function() {
65456545 'Hafez2_gh-9673-1'
65466546 ]
65476547 ) ;
6548+ } ) ;
6549+
6550+ it ( 'increments version key on successful save (gh-15800)' , async function ( ) {
6551+ // Arrange
6552+ const userSchema = new Schema ( {
6553+ name : [ String ] ,
6554+ email : { type : String , minLength : 3 }
6555+ } ) ;
6556+
6557+ const User = db . model ( 'User' , userSchema ) ;
6558+ const user1 = new User ( { name : [ '123' ] , email : '12314' } ) ;
6559+ await user1 . save ( ) ;
6560+
6561+ // Act
6562+ const user = await User . findOne ( { _id : user1 . _id } ) ;
6563+ assert . ok ( user ) ;
6564+
6565+ // Before, __v should be 0
6566+ assert . equal ( user . __v , 0 ) ;
6567+
6568+ // markModified on array field (triggers $set)
6569+ user . markModified ( 'name' ) ;
6570+ await User . bulkSave ( [ user ] ) ;
6571+
6572+ const dbUser1 = await User . findById ( user . _id ) ;
6573+ assert . equal ( dbUser1 . __v , 1 ) ;
6574+ assert . equal ( user . __v , 1 ) ;
6575+
6576+ // Update another path and markModified
6577+ user . email = '1375' ;
6578+ await User . bulkSave ( [ user ] ) ;
6579+ const dbUser2 = await User . findById ( user . _id ) ;
6580+ assert . equal ( dbUser2 . __v , 1 ) ;
6581+ assert . equal ( user . __v , 1 ) ;
6582+
6583+ let reloaded = await User . findById ( user . _id ) ;
6584+ assert . equal ( reloaded . __v , 1 ) ;
6585+
6586+ user . email = '1' ;
6587+ await assert . rejects (
6588+ ( ) => User . bulkSave ( [ user ] ) ,
6589+ / e m a i l .* i s s h o r t e r t h a n t h e m i n i m u m a l l o w e d l e n g t h /
6590+ ) ;
6591+ assert . equal ( user . __v , 1 ) ;
6592+
6593+ reloaded = await User . findById ( user . _id ) ;
6594+ assert . equal ( reloaded . __v , 1 ) ;
6595+ } ) ;
6596+
6597+ it ( 'saves new documents with ordered: false (gh-15495)' , async function ( ) {
6598+ const userSchema = new Schema ( {
6599+ name : { type : String }
6600+ } ) ;
65486601
6602+ const User = db . model ( 'User' , userSchema ) ;
6603+
6604+
6605+ await User . bulkSave ( [
6606+ new User ( { name : 'Hafez1_gh-9673-1' } ) ,
6607+ new User ( { name : 'Hafez2_gh-9673-1' } )
6608+ ] , { ordered : false } ) ;
6609+
6610+ const users = await User . find ( ) . sort ( 'name' ) ;
6611+
6612+ assert . deepEqual (
6613+ users . map ( user => user . name ) ,
6614+ [
6615+ 'Hafez1_gh-9673-1' ,
6616+ 'Hafez2_gh-9673-1'
6617+ ]
6618+ ) ;
65496619 } ) ;
65506620
65516621 it ( 'updates documents' , async function ( ) {
0 commit comments