ASSERT_EQUALS(expectedObj, request.toBSON()); } TEST(FindAndModifyRequest, ParseWithUpdateOnlyRequiredFields) { BSONObj cmdObj(fromjson(R"json({ query: { x: 1 }, update: { y: 1 } })json")); auto parseStatus = FindAndModifyRequest::parseFromBSON(NamespaceString("a.b"), cmdObj); ASSERT_OK(parseStatus.getStatus()); auto request = parseStatus.getValue(); ASSERT_EQUALS(NamespaceString("a.b").toString(), request.getNamespaceString().toString()); ASSERT_EQUALS(BSON("x" << 1), request.getQuery()); ASSERT_EQUALS(BSON("y" << 1), request.getUpdateObj()); ASSERT_EQUALS(false, request.isUpsert()); ASSERT_EQUALS(false, request.isRemove()); ASSERT_EQUALS(BSONObj(), request.getFields()); ASSERT_EQUALS(BSONObj(), request.getSort()); ASSERT_EQUALS(false, request.shouldReturnNew()); } TEST(FindAndModifyRequest, ParseWithUpdateFullSpec) { BSONObj cmdObj(fromjson(R"json({ query: { x: 1 }, update: { y: 1 }, upsert: true, fields: { x: 1, y: 1 }, sort: { z: -1 }, new: true
ASSERT_BSONOBJ_EQ(expectedObj, request.toBSON()); } TEST(FindAndModifyRequest, ParseWithUpdateOnlyRequiredFields) { BSONObj cmdObj(fromjson(R"json({ query: { x: 1 }, update: { y: 1 } })json")); auto parseStatus = FindAndModifyRequest::parseFromBSON(NamespaceString("a.b"), cmdObj); ASSERT_OK(parseStatus.getStatus()); auto request = parseStatus.getValue(); ASSERT_EQUALS(NamespaceString("a.b").toString(), request.getNamespaceString().toString()); ASSERT_BSONOBJ_EQ(BSON("x" << 1), request.getQuery()); ASSERT_BSONOBJ_EQ(BSON("y" << 1), request.getUpdateObj()); ASSERT_EQUALS(false, request.isUpsert()); ASSERT_EQUALS(false, request.isRemove()); ASSERT_BSONOBJ_EQ(BSONObj(), request.getFields()); ASSERT_BSONOBJ_EQ(BSONObj(), request.getSort()); ASSERT_BSONOBJ_EQ(BSONObj(), request.getCollation()); ASSERT_EQUALS(0u, request.getArrayFilters().size()); ASSERT_EQUALS(false, request.shouldReturnNew()); } TEST(FindAndModifyRequest, ParseWithUpdateFullSpec) { BSONObj cmdObj(fromjson(R"json({ query: { x: 1 }, update: { y: 1 }, upsert: true, fields: { x: 1, y: 1 },