diff options
author | Siyuan Zhou <siyuan.zhou@mongodb.com> | 2014-02-19 12:45:53 -0500 |
---|---|---|
committer | Matt Kangas <matt.kangas@mongodb.com> | 2014-03-03 22:54:10 -0500 |
commit | 3660343e0b4627d2fee4afb89b74d32644d16d18 (patch) | |
tree | ffa571e0b73ce56d73c2ae23f458f0db772ef782 /jstests/core/upsert3.js | |
parent | 9fae141a1f3fe652fa6002e47722c5ceb051cffb (diff) | |
download | mongo-3660343e0b4627d2fee4afb89b74d32644d16d18.tar.gz |
SERVER-12127 migrate js tests to jscore suite when not related to writes
Migrate js tests starting from j-z.
Include SERVER-12920 Update use_power_of_2.js
Signed-off-by: Matt Kangas <matt.kangas@mongodb.com>
Diffstat (limited to 'jstests/core/upsert3.js')
-rw-r--r-- | jstests/core/upsert3.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/jstests/core/upsert3.js b/jstests/core/upsert3.js new file mode 100644 index 00000000000..d23fbabc680 --- /dev/null +++ b/jstests/core/upsert3.js @@ -0,0 +1,52 @@ +// tests to make sure no dup fields are created when using query to do upsert +var res; +t = db.upsert3; +t.drop(); + +//make sure we validate query +res = t.update( {a: {"a.a": 1}} , {$inc: {y: 1}} , true ); +assert.writeError( res, "a.a.a-1 - " + res.toString() + " doc:" + tojson(t.findOne())); + +res = t.update( {a: {$a: 1}} , {$inc: {y: 1}} , true ); +assert.writeError(res, "a.$a-1 - " + res.toString() + " doc:" + tojson(t.findOne())); + +// make sure the new _id is not duplicated +res = t.update( {"a.b": 1, a: {a: 1, b: 1}} , {$inc: {y: 1}} , true ); +assert.writeError(res, "a.b-1 - " + res.toString() + " doc:" + tojson(t.findOne())); + +res = t.update( {"_id.a": 1, _id: {a: 1, b: 1}} , {$inc : {y: 1}} , true ); +assert.writeError(res, "_id-1 - " + res.toString() + " doc:" + tojson(t.findOne())); + +res = t.update( {_id: {a: 1, b: 1}, "_id.a": 1} , { $inc: {y: 1}} , true ); +assert.writeError(res, "_id-2 - " + res.toString() + " doc:" + tojson(t.findOne())); + +// Should be redundant, but including from SERVER-11363 +res = t.update( {_id: {a: 1, b: 1}, "_id.a": 1} , {$setOnInsert: {y: 1}} , true ); +assert.writeError(res, "_id-3 - " + res.toString() + " doc:" + tojson(t.findOne())); + +//Should be redundant, but including from SERVER-11514 +res = t.update( {"a": {}, "a.c": 2} , {$set: {x: 1}}, true ); +assert.writeError(res, "a.c-1 - " + res.toString() + " doc:" + tojson(t.findOne())); + +// Should be redundant, but including from SERVER-4830 +res = t.update( {'a': {b: 1}, 'a.c': 1}, {$inc: {z: 1}}, true ); +assert.writeError(res, "a-1 - " + res.toString() + " doc:" + tojson(t.findOne())); + +// Should be redundant, but including from SERVER-4830 +res = t.update( {a: 1, "a.b": 1, a: [1, {b: 1}]}, {$inc: {z: 1}}, true ); +assert.writeError(res, "a-2 - " + res.toString() + " doc:" + tojson(t.findOne())); + +// Replacement tests +// Query is ignored for replacements, except _id field. +res = t.update( {r: {a: 1, b: 1}, "r.a": 1} , {y: 1} , true ); +assert.writeOK(res); +assert(t.findOne().y, 1, "inserted doc missing field") +var docMinusId = t.findOne(); +delete docMinusId._id +assert.docEq({y: 1}, docMinusId, "r-1") +t.drop() + +res = t.update( {_id: {a:1, b:1}, "_id.a": 1} , {y: 1} , true ); +assert.writeOK(res); +assert.docEq({_id: {a: 1, b: 1}, y: 1}, t.findOne(), "_id-4") +t.drop() |