package net.karneim.pojobuilder.processor.with.validator;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import net.karneim.pojobuilder.processor.with.ProcessorTestSupport;
import org.junit.Test;
import static net.karneim.pojobuilder.PbAssertions.assertThat;
import static net.karneim.pojobuilder.testenv.JavaProject.Compilation;
/**
* @feature We can configure the {@link GeneratePojoBuilder} annotation to generate a call to a
* validator (that must be implemented manually be the user).
* @see GeneratePojoBuilder#withValidator()
*/
public class AnnotationProcessor_Validator_Test extends ProcessorTestSupport {
/**
* @throws Exception
* @scenario a validator class that a matching 'validate' method is configurd
*/
@Test
public void validatorWithMatchingValidateMethod() {
// Given:
sourceFor(Pojo.class);
// When:
prj.compile();
// Then:
assertThat(prj)
.generatedSameSourceAs(PojoBuilder.class)
.compiled(PojoBuilder.class)
.reported(Compilation.Success);
}
/**
* @throws Exception
* @scenario a validator class that no 'validate' method is configurd
*/
@Test
public void validatorWithoutValidateMethod() {
// Given:
sourceFor(Pojo2.class);
// When:
prj.compile();
// Then:
assertThat(prj)
.reported(Compilation.Failure);
}
}