package core.framework.impl.validate;
import core.framework.api.util.Lists;
import core.framework.api.validate.NotNull;
import org.junit.Assert;
import org.junit.Test;
import java.lang.reflect.Field;
import java.util.List;
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
/**
* @author neo
*/
public class NotNullValidatorTest {
@Test
public void validate() {
Validator validator = new ValidatorBuilder(Bean.class, Field::getName).build();
Bean bean = new Bean();
bean.child = new ChildBean();
bean.children = Lists.newArrayList(bean.child);
ValidationErrors errors = new ValidationErrors();
validator.validate(bean, errors, false);
Assert.assertTrue(errors.hasError());
assertEquals(4, errors.errors.size());
assertThat(errors.errors.get("stringField"), containsString("stringField"));
assertThat(errors.errors.get("booleanField"), containsString("booleanField"));
assertThat(errors.errors.get("child.intField"), containsString("intField"));
assertThat(errors.errors.get("children.intField"), containsString("intField"));
}
@Test
public void partialValidate() {
Validator validator = new ValidatorBuilder(Bean.class, Field::getName).build();
Bean bean = new Bean();
ValidationErrors errors = new ValidationErrors();
validator.validate(bean, errors, true);
Assert.assertFalse(errors.hasError());
}
static class Bean {
@NotNull(message = "stringField must not be null")
public String stringField;
public String nullStringField;
@NotNull(message = "booleanField must not be null")
public Boolean booleanField;
@NotNull
public ChildBean child;
public List<ChildBean> children;
}
static class ChildBean {
@NotNull(message = "intField must not be null")
public Integer intField;
}
}