summaryrefslogtreecommitdiff
path: root/src/mongo/db/ops/modifier_push_test.cpp
diff options
context:
space:
mode:
authorScott Hernandez <scotthernandez@gmail.com>2013-07-12 12:13:08 -0400
committerScott Hernandez <scotthernandez@gmail.com>2013-07-15 09:12:42 -0400
commit746dee394d9529b42b785d4c72c1187bc33c936f (patch)
tree8aa5453e2b1b6ef8c3aca6eb24bb812b2fecdd6d /src/mongo/db/ops/modifier_push_test.cpp
parent4d95966d3ec97c148d887fd97265b55cb01309e1 (diff)
downloadmongo-746dee394d9529b42b785d4c72c1187bc33c936f.tar.gz
SERVER-7174: $push fix for missing dest
Diffstat (limited to 'src/mongo/db/ops/modifier_push_test.cpp')
-rw-r--r--src/mongo/db/ops/modifier_push_test.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/mongo/db/ops/modifier_push_test.cpp b/src/mongo/db/ops/modifier_push_test.cpp
index 4204a8007bf..0a8c46b670a 100644
--- a/src/mongo/db/ops/modifier_push_test.cpp
+++ b/src/mongo/db/ops/modifier_push_test.cpp
@@ -588,6 +588,38 @@ namespace {
ASSERT_EQUALS(fromjson("{$set: {a: [{b:0},{b:1}]}}"), logDoc);
}
+ TEST(SimpleObjMod, PrepareApplyDotted) {
+ Document doc(fromjson("{ _id : 1 , "
+ " question : 'a', "
+ " choices : { "
+ " first : { choice : 'b' }, "
+ " second : { choice : 'c' } }"
+ "}"));
+ Mod pushMod(fromjson("{$push: {'choices.first.votes': 1}}"));
+
+ ModifierInterface::ExecInfo execInfo;
+ ASSERT_OK(pushMod.prepare(doc.root(), "", &execInfo));
+
+ ASSERT_EQUALS(execInfo.fieldRef[0]->dottedField(), "choices.first.votes");
+ ASSERT_FALSE(execInfo.inPlace);
+ ASSERT_FALSE(execInfo.noOp);
+
+ ASSERT_OK(pushMod.apply());
+ ASSERT_EQUALS(fromjson( "{ _id : 1 , "
+ " question : 'a', "
+ " choices : { "
+ " first : { choice : 'b', votes: [1]}, "
+ " second : { choice : 'c' } }"
+ "}"),
+ doc);
+
+ Document logDoc;
+ ASSERT_OK(pushMod.log(logDoc.root()));
+ ASSERT_EQUALS(countChildren(logDoc.root()), 1u);
+ ASSERT_EQUALS(fromjson("{$set: {'choices.first.votes':[1]}}"), logDoc);
+ }
+
+
//
// $pushAll Variation
//