This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 53c4e2a5e56 ✅ Add tests (#8450)
53c4e2a5e56 is described below

commit 53c4e2a5e5694886c410050d28b9212e690f0baa
Author: Federico Mariani <34543311+cro...@users.noreply.github.com>
AuthorDate: Thu Sep 29 22:25:57 2022 +0200

    ✅ Add tests (#8450)
---
 ...gStrategyTest.java => JacksonFeaturesTest.java} | 43 +++++++++++++--------
 .../jackson/JacksonMarshalNamingStrategyTest.java  | 45 ++++++++++++++--------
 2 files changed, 56 insertions(+), 32 deletions(-)

diff --git 
a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalNamingStrategyTest.java
 
b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonFeaturesTest.java
similarity index 52%
copy from 
components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalNamingStrategyTest.java
copy to 
components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonFeaturesTest.java
index 10316cbb090..21322c4c950 100644
--- 
a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalNamingStrategyTest.java
+++ 
b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonFeaturesTest.java
@@ -16,41 +16,54 @@
  */
 package org.apache.camel.component.jackson;
 
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.MapperFeature;
+import com.fasterxml.jackson.databind.SerializationFeature;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class JacksonMarshalNamingStrategyTest extends CamelTestSupport {
+public class JacksonFeaturesTest extends CamelTestSupport {
 
     @Test
-    public void testMarshalAndUnmarshalMap() throws Exception {
-        PojoNamingStrategy pojoNamingStrategy = new PojoNamingStrategy();
-        pojoNamingStrategy.setFieldOne("test");
-        pojoNamingStrategy.setFieldTwo("supertest");
-
+    public void testEnableDeserializationFeature() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.message(0).body().isNull();
+
+        template.send("direct:format", exchange -> 
exchange.getIn().setBody("[]"));
+
         mock.expectedMessageCount(1);
-        Object marshalled = template.requestBody("direct:in", 
pojoNamingStrategy);
-        String marshalledAsString = 
context.getTypeConverter().convertTo(String.class, marshalled);
-        assertEquals("{\"field.one\":\"test\",\"field.two\":\"supertest\"}", 
marshalledAsString);
 
         mock.assertIsSatisfied();
     }
 
+    @Test
+    public void testEnableMapperFeature() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.message(0).body().isInstanceOf(TestPojo.class);
+
+        template.send("direct:format", exchange -> 
exchange.getIn().setBody("{\"nAmE\": \"test\"}"));
+
+        mock.expectedMessageCount(1);
+        mock.assertIsSatisfied();
+    }
+
     @Override
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
 
             @Override
             public void configure() {
-                JacksonDataFormat format = new JacksonDataFormat();
-                format.setNamingStrategy("LOWER_DOT_CASE");
-                from("direct:in").marshal(format).to("mock:result");
+                JacksonDataFormat format = new 
JacksonDataFormat(TestPojo.class);
+                
format.enableFeature(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT);
+                
format.enableFeature(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES);
+                format.disableFeature(SerializationFeature.INDENT_OUTPUT);
+                
format.disableFeature(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
+                format.disableFeature(MapperFeature.APPLY_DEFAULT_VALUES);
+
+                from("direct:format").unmarshal(format).to("mock:result");
             }
         };
     }
-
 }
diff --git 
a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalNamingStrategyTest.java
 
b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalNamingStrategyTest.java
index 10316cbb090..8317d0d1291 100644
--- 
a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalNamingStrategyTest.java
+++ 
b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalNamingStrategyTest.java
@@ -16,41 +16,52 @@
  */
 package org.apache.camel.component.jackson;
 
-import org.apache.camel.builder.RouteBuilder;
+import java.util.stream.Stream;
+
+import org.apache.camel.builder.RouteConfigurationBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class JacksonMarshalNamingStrategyTest extends CamelTestSupport {
 
-    @Test
-    public void testMarshalAndUnmarshalMap() throws Exception {
+    @ParameterizedTest
+    @MethodSource("namingStrategies")
+    public void testNamingStrategy(String namingStrategy, String expectedJson) 
throws Exception {
         PojoNamingStrategy pojoNamingStrategy = new PojoNamingStrategy();
         pojoNamingStrategy.setFieldOne("test");
         pojoNamingStrategy.setFieldTwo("supertest");
 
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedMessageCount(1);
-        Object marshalled = template.requestBody("direct:in", 
pojoNamingStrategy);
-        String marshalledAsString = 
context.getTypeConverter().convertTo(String.class, marshalled);
-        assertEquals("{\"field.one\":\"test\",\"field.two\":\"supertest\"}", 
marshalledAsString);
-
-        mock.assertIsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
 
+        context.addRoutes(new RouteConfigurationBuilder() {
             @Override
-            public void configure() {
+            public void configuration() throws Exception {
                 JacksonDataFormat format = new JacksonDataFormat();
-                format.setNamingStrategy("LOWER_DOT_CASE");
+                format.setNamingStrategy(namingStrategy);
                 from("direct:in").marshal(format).to("mock:result");
             }
-        };
+        });
+
+        Object marshalled = template.requestBody("direct:in", 
pojoNamingStrategy);
+        String marshalledAsString = 
context.getTypeConverter().convertTo(String.class, marshalled);
+        assertEquals(expectedJson, marshalledAsString);
+
+        mock.assertIsSatisfied();
     }
 
+    private static Stream<Arguments> namingStrategies() {
+        return Stream.of(
+                Arguments.of("LOWER_DOT_CASE", 
"{\"field.one\":\"test\",\"field.two\":\"supertest\"}"),
+                Arguments.of("SNAKE_CASE", 
"{\"field_one\":\"test\",\"field_two\":\"supertest\"}"),
+                Arguments.of("LOWER_CAMEL_CASE", 
"{\"fieldOne\":\"test\",\"fieldTwo\":\"supertest\"}"),
+                Arguments.of("LOWER_CASE", 
"{\"fieldone\":\"test\",\"fieldtwo\":\"supertest\"}"),
+                Arguments.of("KEBAB_CASE", 
"{\"field-one\":\"test\",\"field-two\":\"supertest\"}"),
+                Arguments.of("UPPER_CAMEL_CASE", 
"{\"FieldOne\":\"test\",\"FieldTwo\":\"supertest\"}"));
+    }
 }

Reply via email to