package cz.habarta.typescript.generator;
import com.fasterxml.jackson.annotation.JsonProperty;
import cz.habarta.typescript.generator.parser.BeanModel;
import cz.habarta.typescript.generator.parser.EnumModel;
import cz.habarta.typescript.generator.parser.Jackson2Parser;
import cz.habarta.typescript.generator.parser.Model;
import cz.habarta.typescript.generator.parser.PropertyModel;
import java.io.File;
import java.util.*;
import org.junit.Assert;
import org.junit.Test;
public class JavadocTest {
@Test
public void testJavadoc() {
final Settings settings = TestUtils.settings();
settings.javadocXmlFiles = Arrays.asList(new File("target/test-javadoc.xml"));
final TypeProcessor typeProcessor = new DefaultTypeProcessor();
{
final Model model = new Jackson2Parser(settings, typeProcessor).parseModel(ClassWithJavadoc.class);
final BeanModel bean = model.getBeans().get(0);
Assert.assertEquals("Documentation for ClassWithJavadoc. First line.", bean.getComments().get(0));
Assert.assertEquals("Second line.", bean.getComments().get(1));
final PropertyModel property1 = bean.getProperties().get(0);
Assert.assertEquals("Documentation for documentedField.", property1.getComments().get(0));
final PropertyModel property2 = bean.getProperties().get(1);
Assert.assertEquals("Documentation for documentedEnumField.", property2.getComments().get(0));
final EnumModel<?> enumModel = model.getEnums().get(0);
Assert.assertEquals("Documentation for DummyEnum.", enumModel.getComments().get(0));
}
{
final Model model = new Jackson2Parser(settings, typeProcessor).parseModel(ClassWithoutJavadoc.class);
final BeanModel bean = model.getBeans().get(0);
Assert.assertNull(bean.getComments());
final PropertyModel property = bean.getProperties().get(0);
Assert.assertNull(property.getComments());
}
{
final String generated = new TypeScriptGenerator(settings).generateTypeScript(Input.from(ClassWithJavadoc.class, InterfaceWithJavadoc.class));
Assert.assertTrue(generated.contains("Documentation for ClassWithJavadoc. First line."));
Assert.assertTrue(generated.contains("Second line."));
Assert.assertTrue(generated.contains("Documentation for documentedField."));
Assert.assertTrue(generated.contains("Documentation for documentedEnumField."));
Assert.assertTrue(generated.contains("Documentation for DummyEnum."));
Assert.assertTrue(generated.contains("Documentation for getter property."));
Assert.assertTrue(generated.contains("Documentation for renamed field."));
Assert.assertTrue(generated.contains("Documentation for InterfaceWithJavadoc."));
Assert.assertTrue(generated.contains("Documentation for interface getter property."));
Assert.assertTrue(generated.contains("@return value of getterPropery"));
Assert.assertTrue(generated.contains("@deprecated replaced by something else"));
}
}
/**
* Documentation for ClassWithJavadoc. First line.
* Second line.
*/
public static class ClassWithJavadoc {
/**
* Documentation for documentedField.
*/
public String documentedField;
/**
* Documentation for documentedEnumField.
*/
public DummyEnum documentedEnumField;
/**
* Documentation for getter property.
*/
public String getGetterPropery() {
return null;
}
/**
* Documentation for renamed field.
*/
@JsonProperty(value = "newName")
public String originalName;
}
/**
* Documentation for InterfaceWithJavadoc.
*/
public static interface InterfaceWithJavadoc {
/**
* Documentation for interface getter property.
* @return value of getterPropery
* @deprecated replaced by something else
*/
@Deprecated
public String getGetterPropery();
}
public static class ClassWithoutJavadoc {
public String undocumentedField;
}
}