package com.josketres.builderator;
import org.junit.Test;
import test.classes.Address;
import test.classes.NormalJavaBean;
import java.util.Date;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class MetadataExtractorTest {
@Test
public void shouldGenerateMetadataOfTargetClass() {
MetadataExtractor gen = new MetadataExtractor(NormalJavaBean.class);
TargetClass data = gen.getMetadata();
assertEquals(NormalJavaBean.class.getSimpleName(), data.getName());
assertEquals(NormalJavaBean.class.getName(), data.getQualifiedName());
}
@Test
public void shouldGeneratePropertiesMetadata() throws Exception {
MetadataExtractor gen = new MetadataExtractor(NormalJavaBean.class);
TargetClass data = gen.getMetadata();
assertEquals(NormalJavaBean.class.getSimpleName(), data.getName());
assertEquals(NormalJavaBean.class.getName(), data.getQualifiedName());
assertEquals(NormalJavaBean.class.getPackage().getName(), data.getPackageName());
List<Property> properties = data.getProperties();
propertyIs(properties.get(0), Address.class, "address", "setAddress");
propertyIs(properties.get(1), int.class, "age", "setAge");
propertyIs(properties.get(2), Date.class, "date", "setDate");
propertyIs(properties.get(3), String.class, "name", "setName");
assertEquals(4, properties.size());
}
private void propertyIs(Property property,
Class<?> clazz, String name, String setterName) {
assertEquals(name, property.getName());
assertEquals(clazz.getSimpleName(), property.getType());
assertEquals(clazz.getName(), property.getQualifiedName());
assertEquals(setterName, property.getSetterName());
}
}