String pojoClassname = SubclassPojo1.class.getCanonicalName();
TypeElement pojoType = elements.getTypeElement(pojoClassname);
Input input = inputFactory.getInput(pojoType);
// When:
Output output = underTest.analyze(input);
// Then:
assertThat(output).isNotNull();
assertThat(output.getBuilderModel().getPojoType().getName()).isEqualTo(pojoClassname);
TypeM builderType = output.getBuilderModel().getType();
assertThat(builderType).isNotNull();
assertThat(builderType.getName())
.isEqualTo("net.karneim.pojobuilder.analysis.with.superclass.SubclassPojo1Builder");
assertThat(output.getBuilderModel().getProperties()).hasSize(3);
PropertyM nameProperty = output.getBuilderModel().getProperties().get(new Key("name", "java.lang.String"));
assertThat(nameProperty).isNotNull();
assertThat(nameProperty.getFieldAccess()).isNotNull();
assertThat(nameProperty.getFieldAccess().getModifier()).contains(Modifier.PUBLIC);
PropertyM ageProperty = output.getBuilderModel().getProperties().get(new Key("age", "int"));
assertThat(ageProperty).isNotNull();
assertThat(ageProperty.getFieldAccess()).isNotNull();
assertThat(ageProperty.getFieldAccess().getModifier()).contains(Modifier.PUBLIC);
PropertyM hairColorProperty = output.getBuilderModel().getProperties().get(new Key("hairColor", "java.awt.Color"));
assertThat(hairColorProperty).isNotNull();
assertThat(hairColorProperty.getFieldAccess()).isNotNull();
assertThat(hairColorProperty.getFieldAccess().getModifier()).contains(Modifier.PUBLIC);
}