diff options
author | David Storch <david.storch@10gen.com> | 2017-03-07 14:32:07 -0500 |
---|---|---|
committer | David Storch <david.storch@10gen.com> | 2017-03-13 17:50:16 -0400 |
commit | 2f367a1e6aafa0e6bdf58f0564d3dcd7b279733f (patch) | |
tree | aed6dda9a3972b4723ea8091a5c5272a010cdff5 /src/mongo/db/pipeline/document_source_add_fields_test.cpp | |
parent | a0516b5f896703682c98cf0b8c2e333f743f4dc1 (diff) | |
download | mongo-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.cpp | 42 |
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 |