ReplaceOneModel<TDocument> replaceOneModel = (ReplaceOneModel<TDocument>) writeModel; writeRequest = new UpdateRequest(toBsonDocument(replaceOneModel.getFilter()), documentToBsonDocument(replaceOneModel .getReplacement()), WriteRequest.Type.REPLACE) .upsert(replaceOneModel.getReplaceOptions().isUpsert())
assertEquals(1,filter.size(),"filter document should only contain "+DBCollection.ID_FIELD_NAME); assertTrue(filter.get(DBCollection.ID_FIELD_NAME).isObjectId(),"filter document _id was not of type ObjectId"); assertTrue(rom.getReplacement().get(DBCollection.ID_FIELD_NAME).isObjectId(),"replacement document _id was not of type ObjectId"); assertEquals(42,rom.getReplacement().getInt32("myValueField").getValue(),"myValueField's value mismatch");
ReplaceOneModel<TDocument> replaceOneModel = (ReplaceOneModel<TDocument>) writeModel; writeRequest = new UpdateRequest(toBsonDocument(replaceOneModel.getFilter()), documentToBsonDocument(replaceOneModel .getReplacement()), WriteRequest.Type.REPLACE) .upsert(replaceOneModel.getReplaceOptions().isUpsert())
new BsonDocument("myKeyField",new BsonString("ABCD-1234"))) .append("myValueField",new BsonInt32(23)), rom.getReplacement());
.append("last_name",new BsonString("van Wonderland")) .append("email",new BsonString("alice_"+i+"@wonder.land")), rom.getReplacement());
(ReplaceOneModel<BsonDocument>) result; assertTrue(writeModel.getReplacement().isObjectId(DBCollection.ID_FIELD_NAME), () -> "replacement doc must contain _id field of type ObjectID"); writeModel.getReplacement().get(DBCollection.ID_FIELD_NAME,new BsonObjectId())); assertEquals(replacementDoc,writeModel.getReplacement(), ()-> "replacement doc not matching what is expected");
.append("last_name",new BsonString("in Wonderland")) .append("email",new BsonString("alice"+i+"@wonder.land")), rom.getReplacement());
@Test @DisplayName("when valid doc replace cdc event then correct ReplaceOneModel") public void testValidSinkDocumentForReplacement() { BsonDocument keyDoc = new BsonDocument("id",new BsonString("1004")); BsonDocument valueDoc = new BsonDocument("op",new BsonString("u")) .append("patch",new BsonString(REPLACEMENT_DOC.toJson())); WriteModel<BsonDocument> result = MONGODB_UPDATE.perform(new SinkDocument(keyDoc,valueDoc)); assertTrue(result instanceof ReplaceOneModel, () -> "result expected to be of type ReplaceOneModel"); ReplaceOneModel<BsonDocument> writeModel = (ReplaceOneModel<BsonDocument>) result; assertEquals(REPLACEMENT_DOC,writeModel.getReplacement(), ()-> "replacement doc not matching what is expected"); assertTrue(writeModel.getFilter() instanceof BsonDocument, () -> "filter expected to be of type BsonDocument"); assertEquals(FILTER_DOC,writeModel.getFilter()); assertTrue(writeModel.getOptions().isUpsert(), () -> "replacement expected to be done in upsert mode"); }
@Test @DisplayName("when valid cdc event then correct ReplaceOneModel") public void testValidSinkDocument() { BsonDocument keyDoc = new BsonDocument("id",new BsonString("1004")); BsonDocument valueDoc = new BsonDocument("op",new BsonString("c")) .append("after",new BsonString(REPLACEMENT_DOC.toJson())); WriteModel<BsonDocument> result = MONGODB_INSERT.perform(new SinkDocument(keyDoc,valueDoc)); assertTrue(result instanceof ReplaceOneModel, () -> "result expected to be of type ReplaceOneModel"); ReplaceOneModel<BsonDocument> writeModel = (ReplaceOneModel<BsonDocument>) result; assertEquals(REPLACEMENT_DOC,writeModel.getReplacement(), ()-> "replacement doc not matching what is expected"); assertTrue(writeModel.getFilter() instanceof BsonDocument, () -> "filter expected to be of type BsonDocument"); assertEquals(FILTER_DOC,writeModel.getFilter()); assertTrue(writeModel.getOptions().isUpsert(), () -> "replacement expected to be done in upsert mode"); }
@Test @DisplayName("when sink document is valid for ReplaceOneDefaultStrategy then correct ReplaceOneModel") public void testReplaceOneDefaultStrategyWithValidSinkDocument() { BsonDocument valueDoc = new BsonDocument(DBCollection.ID_FIELD_NAME,new BsonInt32(1004)) .append("first_name",new BsonString("Anne")) .append("last_name",new BsonString("Kretchmar")) .append("email",new BsonString("annek@noanswer.org")); WriteModel<BsonDocument> result = REPLACE_ONE_DEFAULT_STRATEGY.createWriteModel(new SinkDocument(null,valueDoc)); assertTrue(result instanceof ReplaceOneModel, () -> "result expected to be of type ReplaceOneModel"); ReplaceOneModel<BsonDocument> writeModel = (ReplaceOneModel<BsonDocument>) result; assertEquals(REPLACEMENT_DOC_DEFAULT,writeModel.getReplacement(), ()-> "replacement doc not matching what is expected"); assertTrue(writeModel.getFilter() instanceof BsonDocument, () -> "filter expected to be of type BsonDocument"); assertEquals(FILTER_DOC_REPLACE_DEFAULT,writeModel.getFilter()); assertTrue(writeModel.getOptions().isUpsert(), () -> "replacement expected to be done in upsert mode"); }
@Test @DisplayName("when sink document is valid for ReplaceOneBusinessKeyStrategy then correct ReplaceOneModel") public void testReplaceOneBusinessKeyStrategyWithValidSinkDocument() { BsonDocument valueDoc = new BsonDocument(DBCollection.ID_FIELD_NAME, new BsonDocument("first_name",new BsonString("Anne")) .append("last_name",new BsonString("Kretchmar"))) .append("first_name",new BsonString("Anne")) .append("last_name",new BsonString("Kretchmar")) .append("email",new BsonString("annek@noanswer.org")) .append("age", new BsonInt32(23)) .append("active", new BsonBoolean(true)); WriteModel<BsonDocument> result = REPLACE_ONE_BUSINESS_KEY_STRATEGY.createWriteModel(new SinkDocument(null,valueDoc)); assertTrue(result instanceof ReplaceOneModel, () -> "result expected to be of type ReplaceOneModel"); ReplaceOneModel<BsonDocument> writeModel = (ReplaceOneModel<BsonDocument>) result; assertEquals(REPLACEMENT_DOC_BUSINESS_KEY,writeModel.getReplacement(), ()-> "replacement doc not matching what is expected"); assertTrue(writeModel.getFilter() instanceof BsonDocument, () -> "filter expected to be of type BsonDocument"); assertEquals(FILTER_DOC_REPLACE_BUSINESS_KEY,writeModel.getFilter()); assertTrue(writeModel.getOptions().isUpsert(), () -> "replacement expected to be done in upsert mode"); }
(ReplaceOneModel<BsonDocument>) result; assertEquals(replacementDoc,writeModel.getReplacement(), ()-> "replacement doc not matching what is expected");
(ReplaceOneModel<BsonDocument>) result; assertEquals(replacementDoc,writeModel.getReplacement(), ()-> "replacement doc not matching what is expected");
(ReplaceOneModel<BsonDocument>) result; assertEquals(replacementDoc,writeModel.getReplacement(), ()-> "replacement doc not matching what is expected");
(ReplaceOneModel<BsonDocument>) result; assertEquals(replacementDoc,writeModel.getReplacement(), ()-> "replacement doc not matching what is expected");
(ReplaceOneModel<BsonDocument>) result; assertEquals(replacementDoc,writeModel.getReplacement(), ()-> "replacement doc not matching what is expected");