This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-kafka-connector.git
commit fc01b437e71910ef87a648b0e614bf2c1a559ee4 Author: Andrea Tarocchi <andrea.taroc...@gmail.com> AuthorDate: Tue Nov 10 17:38:36 2020 +0100 Enanched unit tests for PojoToSchemaAndStructTransform --- .../PojoToSchemaAndStructTransformTest.java | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/core/src/test/java/org/apache/camel/kafkaconnector/transforms/PojoToSchemaAndStructTransformTest.java b/core/src/test/java/org/apache/camel/kafkaconnector/transforms/PojoToSchemaAndStructTransformTest.java index 8712145..9bc617c 100644 --- a/core/src/test/java/org/apache/camel/kafkaconnector/transforms/PojoToSchemaAndStructTransformTest.java +++ b/core/src/test/java/org/apache/camel/kafkaconnector/transforms/PojoToSchemaAndStructTransformTest.java @@ -19,16 +19,19 @@ package org.apache.camel.kafkaconnector.transforms; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.apache.camel.component.slack.helper.SlackMessage; import org.apache.kafka.connect.connector.ConnectRecord; import org.apache.kafka.connect.data.Schema; import org.apache.kafka.connect.data.Struct; +import org.apache.kafka.connect.errors.ConnectException; import org.apache.kafka.connect.source.SourceRecord; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; public class PojoToSchemaAndStructTransformTest { @@ -69,9 +72,15 @@ public class PojoToSchemaAndStructTransformTest { assertEquals(Schema.Type.STRUCT, transformedSchema.type()); assertEquals(Schema.Type.ARRAY, transformedSchema.field("attachments").schema().type()); assertEquals(Schema.STRING_SCHEMA.type(), transformedSchema.field("attachments").schema().valueSchema().field("title").schema().type()); + assertEquals(Struct.class, transformedCr.value().getClass()); Struct transformedValue = (Struct)transformedCr.value(); assertTrue(ArrayList.class.isAssignableFrom(transformedValue.get("attachments").getClass())); + List actualAttachments = (ArrayList)transformedValue.get("attachments"); + assertEquals(2, actualAttachments.size()); + assertEquals(Struct.class, actualAttachments.get(0).getClass()); + atLeastOneFieldWithGivenValueExists(actualAttachments, "authorName", "Andrea"); + atLeastOneFieldWithGivenValueExists(actualAttachments, "color", "green"); } @Test @@ -94,9 +103,34 @@ public class PojoToSchemaAndStructTransformTest { Schema transformedSchema = transformedCr.valueSchema(); assertEquals(Schema.Type.STRUCT, transformedSchema.type()); assertEquals(Schema.Type.MAP, transformedSchema.field("map").schema().type()); + assertEquals(Struct.class, transformedCr.value().getClass()); Struct transformedValue = (Struct)transformedCr.value(); assertTrue(Map.class.isAssignableFrom(transformedValue.get("map").getClass())); + assertTrue(((Map)transformedValue.get("map")).keySet().contains("ciao")); + assertTrue(((Map)transformedValue.get("map")).values().contains(9)); + } + + @Test() + public void testNotPojoConversion() { + PojoToSchemaAndStructTransform pojoToSchemaAndStructTransform = new PojoToSchemaAndStructTransform(); + pojoToSchemaAndStructTransform.configure(Collections.emptyMap()); + + Map map = Collections.singletonMap("ciao", 9); + + ConnectRecord cr = new SourceRecord(null, null, "testTopic", + Schema.STRING_SCHEMA, "testKeyValue", + Schema.BYTES_SCHEMA, map); + + assertThrows(ConnectException.class, () -> {pojoToSchemaAndStructTransform.apply(cr);}); + } + + private void atLeastOneFieldWithGivenValueExists(List structs, String fieldName, String fieldExpectedValue) { + structs.stream().filter( + struct -> ((Struct) struct).getString(fieldName) == null ? false : true + ).forEach( + struct -> assertEquals(fieldExpectedValue, ((Struct) struct).getString(fieldName)) + ); } public class PojoWithMap {