diff options
Diffstat (limited to 'jstests/core/api/api_version_find_and_modify.js')
-rw-r--r-- | jstests/core/api/api_version_find_and_modify.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/jstests/core/api/api_version_find_and_modify.js b/jstests/core/api/api_version_find_and_modify.js new file mode 100644 index 00000000000..78e9a53a898 --- /dev/null +++ b/jstests/core/api/api_version_find_and_modify.js @@ -0,0 +1,66 @@ +/** + * Tests the findAndModify command under different scenarios with API versioning enabled. + * + * @tags: [ + * assumes_unsharded_collection, + * uses_api_parameters, + * ] + */ +(function() { +"use strict"; + +const testDB = db.getSiblingDB("findAndModifyAPIVersion"); +testDB.dropDatabase(); + +const collName = "testColl"; +const coll = testDB.getCollection(collName); +const incStockFactor = 10; +let curStock = 10; + +assert.commandWorked(coll.insert({itemNumber: 1, stockUnit: curStock})); + +const assertStockUnits = function() { + const result = coll.find({itemNumber: 1}).toArray(); + assert.eq(result.length, 1); + curStock += incStockFactor; + assert.eq(result[0].stockUnit, curStock); +}; + +// Test the command with latest command name and 'apiStrict'. +assert.commandWorked(testDB.runCommand({ + findAndModify: collName, + query: {itemNumber: 1}, + update: {"$inc": {stockUnit: incStockFactor}}, + apiVersion: "1", + apiStrict: true +})); +assertStockUnits(); + +// Test the command with command alias 'findandmodify' and 'apiStrict'. +const result = testDB.runCommand({ + findandmodify: collName, + query: {itemNumber: 1}, + update: {"$inc": {stockUnit: incStockFactor}}, + apiVersion: "1", + apiStrict: true +}); +assert.commandFailedWithCode(result, ErrorCodes.APIStrictError); + +// Test the command with latest command name without 'apiStrict'. +assert.commandWorked(testDB.runCommand({ + findAndModify: collName, + query: {itemNumber: 1}, + update: {"$inc": {stockUnit: incStockFactor}}, + apiVersion: "1" +})); +assertStockUnits(); + +// Test the command with command alias 'findandmodify' without 'apiStrict'. +assert.commandWorked(testDB.runCommand({ + findandmodify: collName, + query: {itemNumber: 1}, + update: {"$inc": {stockUnit: incStockFactor}}, + apiVersion: "1" +})); +assertStockUnits(); +})(); |