summaryrefslogtreecommitdiff
path: root/jstests/core/upsert3.js
diff options
context:
space:
mode:
authorSiyuan Zhou <siyuan.zhou@mongodb.com>2014-02-19 12:45:53 -0500
committerMatt Kangas <matt.kangas@mongodb.com>2014-03-03 22:54:10 -0500
commit3660343e0b4627d2fee4afb89b74d32644d16d18 (patch)
treeffa571e0b73ce56d73c2ae23f458f0db772ef782 /jstests/core/upsert3.js
parent9fae141a1f3fe652fa6002e47722c5ceb051cffb (diff)
downloadmongo-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.js52
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()