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\"}")); + } }