|
| 1 | +package org.inferred.freebuilder.processor; |
| 2 | + |
| 3 | +import com.fasterxml.jackson.annotation.JsonAlias; |
| 4 | +import com.fasterxml.jackson.databind.ObjectMapper; |
| 5 | +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; |
| 6 | + |
| 7 | +import org.inferred.freebuilder.FreeBuilder; |
| 8 | +import org.inferred.freebuilder.processor.source.SourceBuilder; |
| 9 | +import org.inferred.freebuilder.processor.source.feature.FeatureSet; |
| 10 | +import org.inferred.freebuilder.processor.source.feature.StaticFeatureSet; |
| 11 | +import org.inferred.freebuilder.processor.source.testing.BehaviorTester; |
| 12 | +import org.inferred.freebuilder.processor.source.testing.ParameterizedBehaviorTestFactory.Shared; |
| 13 | +import org.inferred.freebuilder.processor.source.testing.TestBuilder; |
| 14 | +import org.junit.Test; |
| 15 | + |
| 16 | +public class JacksonIntegrationTest { |
| 17 | + |
| 18 | + @Shared public BehaviorTester behaviorTester; |
| 19 | + |
| 20 | + @Test |
| 21 | + public void testJsonAliasSupport() { |
| 22 | + FeatureSet featureSet = new StaticFeatureSet(); |
| 23 | + BehaviorTester.create(featureSet) |
| 24 | + .with(new Processor(featureSet)) |
| 25 | + .with(SourceBuilder.forTesting() |
| 26 | + .addLine("package com.example;") |
| 27 | + .addLine("@%s", FreeBuilder.class) |
| 28 | + .addLine("@%s(builder = DataType.Builder.class)", JsonDeserialize.class) |
| 29 | + .addLine("public abstract class DataType {") |
| 30 | + .addLine(" @%s({\"a\", \"theagame\"})", JsonAlias.class) |
| 31 | + .addLine(" public abstract int propertyA();") |
| 32 | + .addLine("") |
| 33 | + .addLine(" public static class Builder extends DataType_Builder {}") |
| 34 | + .addLine("}")) |
| 35 | + .with(testBuilder() |
| 36 | + .addLine("DataType expected = new DataType.Builder().propertyA(13).build();") |
| 37 | + .addLine("%1$s mapper = new %1$s();", ObjectMapper.class) |
| 38 | + .addLine("String canonicalJson = \"{ \\\"propertyA\\\": 13 }\";") |
| 39 | + .addLine("DataType canonical = mapper.readValue(canonicalJson, DataType.class);") |
| 40 | + .addLine("assertEquals(expected, canonical);") |
| 41 | + .addLine("String alternative1Json = \"{ \\\"a\\\": 13 }\";") |
| 42 | + .addLine("DataType alternative1 = mapper.readValue(canonicalJson, DataType.class);") |
| 43 | + .addLine("assertEquals(expected, alternative1);") |
| 44 | + .addLine("String alternative2Json = \"{ \\\"theagame\\\": 13 }\";") |
| 45 | + .addLine("DataType alternative2 = mapper.readValue(canonicalJson, DataType.class);") |
| 46 | + .addLine("assertEquals(expected, alternative2);") |
| 47 | + .build()) |
| 48 | + .runTest(); |
| 49 | + } |
| 50 | + |
| 51 | + private static TestBuilder testBuilder() { |
| 52 | + return new TestBuilder().addImport("com.example.DataType"); |
| 53 | + } |
| 54 | +} |
0 commit comments