package net.karneim.pojobuilder.analysis.with.setter; import static javax.lang.model.element.Modifier.PUBLIC; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; import net.karneim.pojobuilder.analysis.Input; import net.karneim.pojobuilder.analysis.Output; import net.karneim.pojobuilder.analysis.with.AnalysisTestSupport; import net.karneim.pojobuilder.model.PropertyListM.Key; import net.karneim.pojobuilder.model.PropertyM; public class JavaModelAnalyzer_WithSetter_Test extends AnalysisTestSupport { @Test public void testAnalyze_public_void_setMyProperty_Object() { // Given: Class<?> pojoClass = PojoWithPublicVoidObjectSetter.class; Input input = inputFor(pojoClass); // When: Output output = underTest.analyze(input); // Then: assertThat(output).isNotNull(); Key key = new Key("myProperty", "java.lang.Object"); PropertyM property = output.getBuilderModel().getProperties().get(key); assertThat(property).isNotNull(); assertThat(property.getSetterMethod()).isNotNull(); assertThat(property.getSetterMethod().getDeclaringClass().getName()) .isEqualTo(pojoClass.getName()); assertThat(property.getSetterMethod().getModifiers()).containsOnly(PUBLIC); assertThat(property.getSetterMethod().getName()).isEqualTo("setMyProperty"); } @Test public void testAnalyze_public_void_setMyProperty_primitive() { // Given: Class<?> pojoClass = PojoWithPublicVoidPrimitiveSetter.class; Input input = inputFor(pojoClass); // When: Output output = underTest.analyze(input); // Then: assertThat(output).isNotNull(); Key key = new Key("myProperty", "int"); PropertyM property = output.getBuilderModel().getProperties().get(key); assertThat(property).isNotNull(); assertThat(property.getSetterMethod()).isNotNull(); assertThat(property.getSetterMethod().getDeclaringClass().getName()) .isEqualTo(pojoClass.getName()); assertThat(property.getSetterMethod().getModifiers()).containsOnly(PUBLIC); assertThat(property.getSetterMethod().getName()).isEqualTo("setMyProperty"); } @Test public void testAnalyze_public_Object_setMyProperty_Object() { // Given: Class<?> pojoClass = PojoWithPublicObjectObjectSetter.class; Input input = inputFor(pojoClass); // When: Output output = underTest.analyze(input); // Then: assertThat(output).isNotNull(); Key key = new Key("myProperty", "java.lang.Object"); PropertyM property = output.getBuilderModel().getProperties().get(key); assertThat(property).isNotNull(); assertThat(property.getSetterMethod()).isNotNull(); assertThat(property.getSetterMethod().getDeclaringClass().getName()) .isEqualTo(pojoClass.getName()); assertThat(property.getSetterMethod().getModifiers()).containsOnly(PUBLIC); assertThat(property.getSetterMethod().getName()).isEqualTo("setMyProperty"); } @Test public void testAnalyze_public_primitive_setMyProperty_Object() { // Given: Class<?> pojoClass = PojoWithPublicPrimitiveObjectSetter.class; Input input = inputFor(pojoClass); // When: Output output = underTest.analyze(input); // Then: assertThat(output).isNotNull(); Key key = new Key("myProperty", "java.lang.Object"); PropertyM property = output.getBuilderModel().getProperties().get(key); assertThat(property).isNotNull(); assertThat(property.getSetterMethod()).isNotNull(); assertThat(property.getSetterMethod().getDeclaringClass().getName()) .isEqualTo(pojoClass.getName()); assertThat(property.getSetterMethod().getModifiers()).containsOnly(PUBLIC); assertThat(property.getSetterMethod().getName()).isEqualTo("setMyProperty"); } }