summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/document_source_add_fields_test.cpp
diff options
context:
space:
mode:
authorDavid Storch <david.storch@10gen.com>2017-03-07 14:32:07 -0500
committerDavid Storch <david.storch@10gen.com>2017-03-13 17:50:16 -0400
commit2f367a1e6aafa0e6bdf58f0564d3dcd7b279733f (patch)
treeaed6dda9a3972b4723ea8091a5c5272a010cdff5 /src/mongo/db/pipeline/document_source_add_fields_test.cpp
parenta0516b5f896703682c98cf0b8c2e333f743f4dc1 (diff)
downloadmongo-2f367a1e6aafa0e6bdf58f0564d3dcd7b279733f.tar.gz
SERVER-27614 add $$REMOVE agg system variable
Diffstat (limited to 'src/mongo/db/pipeline/document_source_add_fields_test.cpp')
-rw-r--r--src/mongo/db/pipeline/document_source_add_fields_test.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/mongo/db/pipeline/document_source_add_fields_test.cpp b/src/mongo/db/pipeline/document_source_add_fields_test.cpp
index 53ff48ae906..be29dea762b 100644
--- a/src/mongo/db/pipeline/document_source_add_fields_test.cpp
+++ b/src/mongo/db/pipeline/document_source_add_fields_test.cpp
@@ -152,5 +152,47 @@ TEST_F(AddFieldsTest, ShouldPropagatePauses) {
ASSERT_TRUE(addFields->getNext().isEOF());
}
+TEST_F(AddFieldsTest, AddFieldsWithRemoveSystemVariableDoesNotAddField) {
+ auto addFields = DocumentSourceAddFields::create(BSON("fieldToAdd"
+ << "$$REMOVE"),
+ getExpCtx());
+ auto mock = DocumentSourceMock::create(Document{{"existingField", 1}});
+ addFields->setSource(mock.get());
+
+ auto next = addFields->getNext();
+ ASSERT_TRUE(next.isAdvanced());
+ Document expected{{"existingField", 1}};
+ ASSERT_DOCUMENT_EQ(next.releaseDocument(), expected);
+ ASSERT_TRUE(addFields->getNext().isEOF());
+}
+
+TEST_F(AddFieldsTest, AddFieldsWithRootSystemVariableAddsRootAsSubDoc) {
+ auto addFields = DocumentSourceAddFields::create(BSON("b"
+ << "$$ROOT"),
+ getExpCtx());
+ auto mock = DocumentSourceMock::create(Document{{"a", 1}});
+ addFields->setSource(mock.get());
+
+ auto next = addFields->getNext();
+ ASSERT_TRUE(next.isAdvanced());
+ Document expected{{"a", 1}, {"b", Document{{"a", 1}}}};
+ ASSERT_DOCUMENT_EQ(next.releaseDocument(), expected);
+ ASSERT_TRUE(addFields->getNext().isEOF());
+}
+
+TEST_F(AddFieldsTest, AddFieldsWithCurrentSystemVariableAddsRootAsSubDoc) {
+ auto addFields = DocumentSourceAddFields::create(BSON("b"
+ << "$$CURRENT"),
+ getExpCtx());
+ auto mock = DocumentSourceMock::create(Document{{"a", 1}});
+ addFields->setSource(mock.get());
+
+ auto next = addFields->getNext();
+ ASSERT_TRUE(next.isAdvanced());
+ Document expected{{"a", 1}, {"b", Document{{"a", 1}}}};
+ ASSERT_DOCUMENT_EQ(next.releaseDocument(), expected);
+ ASSERT_TRUE(addFields->getNext().isEOF());
+}
+
} // namespace
} // namespace mongo