summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/storage_interface_impl_test.cpp
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2017-04-19 00:03:27 -0400
committerBenety Goh <benety@mongodb.com>2017-04-19 16:13:22 -0400
commit2f7b34fc95a2b101344fd7ab1f51d97ecf02da46 (patch)
treebaf12028740171d60299d9f37b835b80dd6da739 /src/mongo/db/repl/storage_interface_impl_test.cpp
parent6dfa595dda5e67f44daedccabf2ece86d6f0b52b (diff)
downloadmongo-2f7b34fc95a2b101344fd7ab1f51d97ecf02da46.tar.gz
SERVER-28211 add StorageInterface::deleteById()
Diffstat (limited to 'src/mongo/db/repl/storage_interface_impl_test.cpp')
-rw-r--r--src/mongo/db/repl/storage_interface_impl_test.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/mongo/db/repl/storage_interface_impl_test.cpp b/src/mongo/db/repl/storage_interface_impl_test.cpp
index 68fde3bf366..7207eb5002f 100644
--- a/src/mongo/db/repl/storage_interface_impl_test.cpp
+++ b/src/mongo/db/repl/storage_interface_impl_test.cpp
@@ -1530,6 +1530,51 @@ TEST_F(StorageInterfaceImplTest, FindByIdReturnsDocumentWhenDocumentExists) {
ASSERT_BSONOBJ_EQ(doc2, unittest::assertGet(storage.findById(opCtx, nss, doc2["_id"])));
}
+TEST_F(StorageInterfaceImplTest, DeleteByIdReturnsNamespaceNotFoundWhenDatabaseDoesNotExist) {
+ auto opCtx = getOperationContext();
+ StorageInterfaceImpl storage;
+ NamespaceString nss("nosuchdb.coll");
+ auto doc = BSON("_id" << 0 << "x" << 0);
+ ASSERT_EQUALS(ErrorCodes::NamespaceNotFound,
+ storage.deleteById(opCtx, nss, doc["_id"]).getStatus());
+}
+
+TEST_F(StorageInterfaceImplTest, DeleteByIdReturnsNoSuchKeyWhenCollectionIsEmpty) {
+ auto opCtx = getOperationContext();
+ StorageInterfaceImpl storage;
+ auto nss = makeNamespace(_agent);
+ ASSERT_OK(storage.createCollection(opCtx, nss, CollectionOptions()));
+ auto doc = BSON("_id" << 0 << "x" << 0);
+ ASSERT_EQUALS(ErrorCodes::NoSuchKey, storage.deleteById(opCtx, nss, doc["_id"]).getStatus());
+ _assertDocumentsInCollectionEquals(opCtx, nss, {});
+}
+
+TEST_F(StorageInterfaceImplTest, DeleteByIdReturnsNoSuchKeyWhenDocumentIsNotFound) {
+ auto opCtx = getOperationContext();
+ StorageInterfaceImpl storage;
+ auto nss = makeNamespace(_agent);
+ ASSERT_OK(storage.createCollection(opCtx, nss, CollectionOptions()));
+ auto doc1 = BSON("_id" << 0 << "x" << 0);
+ auto doc2 = BSON("_id" << 1 << "x" << 1);
+ auto doc3 = BSON("_id" << 2 << "x" << 2);
+ ASSERT_OK(storage.insertDocuments(opCtx, nss, {doc1, doc3}));
+ ASSERT_EQUALS(ErrorCodes::NoSuchKey, storage.deleteById(opCtx, nss, doc2["_id"]).getStatus());
+ _assertDocumentsInCollectionEquals(opCtx, nss, {doc1, doc3});
+}
+
+TEST_F(StorageInterfaceImplTest, DeleteByIdReturnsDocumentWhenDocumentExists) {
+ auto opCtx = getOperationContext();
+ StorageInterfaceImpl storage;
+ auto nss = makeNamespace(_agent);
+ ASSERT_OK(storage.createCollection(opCtx, nss, CollectionOptions()));
+ auto doc1 = BSON("_id" << 0 << "x" << 0);
+ auto doc2 = BSON("_id" << 1 << "x" << 1);
+ auto doc3 = BSON("_id" << 2 << "x" << 2);
+ ASSERT_OK(storage.insertDocuments(opCtx, nss, {doc1, doc2, doc3}));
+ ASSERT_BSONOBJ_EQ(doc2, unittest::assertGet(storage.deleteById(opCtx, nss, doc2["_id"])));
+ _assertDocumentsInCollectionEquals(opCtx, nss, {doc1, doc3});
+}
+
TEST_F(StorageInterfaceImplTest,
UpsertSingleDocumentReturnsNamespaceNotFoundWhenDatabaseDoesNotExist) {
auto opCtx = getOperationContext();