/** * Creates replace options from updateOptions. * * @param updateOptions the updateOptions * @return replace options */ public static ReplaceOptions createReplaceOptions(final UpdateOptions updateOptions) { notNull("updateOptions", updateOptions); List<? extends Bson> arrayFilters = updateOptions.getArrayFilters(); isTrue("ArrayFilters should be empty.", arrayFilters == null || arrayFilters.isEmpty()); return new ReplaceOptions() .bypassDocumentValidation(updateOptions.getBypassDocumentValidation()) .collation(updateOptions.getCollation()) .upsert(updateOptions.isUpsert()); }
replaceOptions.upsert(updateOptions.isUpsert()); replaceOptions.collation(updateOptions.getCollation());
replaceOptions.upsert(opts.isUpsert());
WriteRequest.Type.UPDATE) .multi(false) .upsert(updateOneModel.getOptions().isUpsert()) .collation(updateOneModel.getOptions().getCollation()) .arrayFilters(toBsonDocumentList(updateOneModel.getOptions().getArrayFilters())); WriteRequest.Type.UPDATE) .multi(true) .upsert(updateManyModel.getOptions().isUpsert()) .collation(updateManyModel.getOptions().getCollation()) .arrayFilters(toBsonDocumentList(updateManyModel.getOptions().getArrayFilters()));
replaceOptions.upsert(updateOptions.isUpsert()); replaceOptions.collation(updateOptions.getCollation());
replaceOptions.upsert(opts.isUpsert());
/** * Creates replace options from updateOptions. * * @param updateOptions the updateOptions * @return replace options */ public static ReplaceOptions createReplaceOptions(final UpdateOptions updateOptions) { notNull("updateOptions", updateOptions); List<? extends Bson> arrayFilters = updateOptions.getArrayFilters(); isTrue("ArrayFilters should be empty.", arrayFilters == null || arrayFilters.isEmpty()); return new ReplaceOptions() .bypassDocumentValidation(updateOptions.getBypassDocumentValidation()) .collation(updateOptions.getCollation()) .upsert(updateOptions.isUpsert()); }
() -> { ReplaceOneModel<BsonDocument> rom = (ReplaceOneModel<BsonDocument>)wm; assertTrue(rom.getOptions().isUpsert(), "replacement expected to be done in upsert mode"); BsonDocument filter = rom.getFilter().toBsonDocument(BsonDocument.class,null); assertEquals(1,filter.size(),"filter document should only contain "+DBCollection.ID_FIELD_NAME);
() -> { ReplaceOneModel<BsonDocument> rom = (ReplaceOneModel<BsonDocument>)wm; assertTrue(rom.getOptions().isUpsert(), "replacement expected to be done in upsert mode"); BsonDocument filter = rom.getFilter().toBsonDocument(BsonDocument.class,null); assertEquals(new BsonDocument("_id",
@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 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 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"); }
assertTrue(writeModel.getOptions().isUpsert(), () -> "update 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"); }
assertTrue(writeModel.getOptions().isUpsert(), () -> "replacement expected to be done in upsert mode");
assertTrue(writeModel.getOptions().isUpsert(), () -> "replacement expected to be done in upsert mode");
assertTrue(writeModel.getOptions().isUpsert(), () -> "replacement expected to be done in upsert mode");
assertTrue(writeModel.getOptions().isUpsert(), () -> "replacement expected to be done in upsert mode");
assertTrue(writeModel.getOptions().isUpsert(), () -> "replacement expected to be done in upsert mode");
assertTrue(writeModel.getOptions().isUpsert(), () -> "replacement expected to be done in upsert mode");