package net.karneim.pojobuilder.processor.with.includeproperties;
import static net.karneim.pojobuilder.PbAssertions.assertThat;
import net.karneim.pojobuilder.processor.with.ProcessorTestSupport;
import net.karneim.pojobuilder.testenv.JavaProject.Compilation;
import org.junit.Test;
/**
* @feature Properties can be explicitly included to the generated builder.
*/
public class AnnotationProcessor_IncludeProperties_Test extends ProcessorTestSupport {
/**
* @scenario Some properties are included, the rest excluded.
*/
@Test
public void testShouldGenerateBuilderWithIncludedPropertiesOnly() {
// Given:
sourceFor(Pojo1.class);
// When:
prj.compile();
// Then:
assertThat(prj).generatedSameSourceAs(Pojo1Builder.class).compiled(Pojo1Builder.class)
.reported(Compilation.Success);
}
/**
* @scenario Mandatory properties (used as constructor parameter) must not be implicitly excluded.
*/
@Test
public void testShouldNotExcludeMandatoryConstructorParameters() {
// Given:
sourceFor(Pojo2.class);
// When:
prj.compile();
// Then:
assertThat(prj).generatedSameSourceAs(Pojo2Builder.class).compiled(Pojo2Builder.class)
.reported(Compilation.Success);
}
/**
* @scenario Mandatory properties (used as factory method parameter) must not be implicitly excluded.
*/
@Test
public void testShouldNotExcludeMandatoryFactoryMethodParameters() {
// Given:
sourceFor(Pojo3.class, Pojo3Factory.class);
// When:
prj.compile();
// Then:
assertThat(prj).generatedSameSourceAs(Pojo3Builder.class).compiled(Pojo3Builder.class)
.reported(Compilation.Success);
}
}