package cz.habarta.typescript.generator;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import cz.habarta.typescript.generator.util.StandardJsonPrettyPrinter;
import org.junit.Assert;
import org.junit.Test;
public class JsonUnwrappedTest {
@Test
public void test() {
final Settings settings = TestUtils.settings();
final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(Person.class));
final String expected = "\n"
+ "interface Person {\n"
+ " AageA: number;\n"
+ " AfirstA: string;\n"
+ " AlastA: string;\n"
+ " A_first2A: string;\n"
+ " A_last2A: string;\n"
+ " Aname3A: Name;\n"
+ " BageB: number;\n"
+ " BfirstB: string;\n"
+ " BlastB: string;\n"
+ " B_first2B: string;\n"
+ " B_last2B: string;\n"
+ " Bname3B: Name;\n"
+ "}\n"
+ "\n"
+ "interface Parent {\n"
+ " age: number;\n"
+ " first: string;\n"
+ " last: string;\n"
+ " _first2: string;\n"
+ " _last2: string;\n"
+ " name3: Name;\n"
+ "}\n"
+ "\n"
+ "interface Name {\n"
+ " first: string;\n"
+ " last: string;\n"
+ "}\n"
+ "";
Assert.assertEquals(expected.trim(), output.trim());
}
public static class Person {
@JsonUnwrapped(prefix = "A", suffix = "A")
public Parent parentA;
@JsonUnwrapped(prefix = "B", suffix = "B")
public Parent parentB;
}
public static class Parent {
public int age;
@JsonUnwrapped
public Name name;
@JsonUnwrapped(prefix = "_", suffix = "2")
public Name name2;
@JsonUnwrapped(enabled = false)
public Name name3;
}
public static class Name {
public String first, last;
}
public static void main(String[] args) throws Exception {
final Parent parent = new Parent();
parent.age = 18;
parent.name = new Name();
parent.name.first = "Joey";
parent.name.last = "Sixpack";
parent.name2 = new Name();
parent.name2.first = "Joey";
parent.name2.last = "Sixpack";
parent.name3 = new Name();
parent.name3.first = "Joey";
parent.name3.last = "Sixpack";
final Person person = new Person();
person.parentA = parent;
person.parentB = parent;
final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
objectMapper.setDefaultPrettyPrinter(new StandardJsonPrettyPrinter());
System.out.println(objectMapper.writeValueAsString(person));
}
}