package com.vaadin.v7.tests.server.validation;
import org.junit.Assert;
import org.junit.Test;
import com.vaadin.tests.data.bean.BeanToValidate;
import com.vaadin.v7.data.Validator.InvalidValueException;
import com.vaadin.v7.data.fieldgroup.BeanFieldGroup;
import com.vaadin.v7.data.validator.BeanValidator;
import com.vaadin.v7.ui.Field;
public class BeanValidationTest {
@Test(expected = InvalidValueException.class)
public void testBeanValidationNull() {
BeanValidator validator = new BeanValidator(BeanToValidate.class,
"firstname");
validator.validate(null);
}
@Test(expected = InvalidValueException.class)
public void testBeanValidationStringTooShort() {
BeanValidator validator = new BeanValidator(BeanToValidate.class,
"firstname");
validator.validate("aa");
}
@Test
public void testBeanValidationStringOk() {
BeanValidator validator = new BeanValidator(BeanToValidate.class,
"firstname");
validator.validate("aaa");
}
@Test(expected = InvalidValueException.class)
public void testBeanValidationIntegerTooSmall() {
BeanValidator validator = new BeanValidator(BeanToValidate.class,
"age");
validator.validate(17);
}
@Test
public void testBeanValidationIntegerOk() {
BeanValidator validator = new BeanValidator(BeanToValidate.class,
"age");
validator.validate(18);
}
@Test(expected = InvalidValueException.class)
public void testBeanValidationTooManyDigits() {
BeanValidator validator = new BeanValidator(BeanToValidate.class,
"decimals");
validator.validate("1234.567");
}
@Test
public void testBeanValidationDigitsOk() {
BeanValidator validator = new BeanValidator(BeanToValidate.class,
"decimals");
validator.validate("123.45");
}
@Test
public void testBeanValidationException_OneValidationError() {
InvalidValueException[] causes = null;
BeanValidator validator = new BeanValidator(BeanToValidate.class,
"lastname");
try {
validator.validate(null);
} catch (InvalidValueException e) {
causes = e.getCauses();
}
Assert.assertEquals(1, causes.length);
}
@Test
public void testBeanValidationsException_TwoValidationErrors() {
InvalidValueException[] causes = null;
BeanValidator validator = new BeanValidator(BeanToValidate.class,
"nickname");
try {
validator.validate("A");
} catch (InvalidValueException e) {
causes = e.getCauses();
}
Assert.assertEquals(2, causes.length);
}
@Test
public void testBeanValidationNotAddedTwice() {
// See ticket #11045
BeanFieldGroup<BeanToValidate> fieldGroup = new BeanFieldGroup<BeanToValidate>(
BeanToValidate.class);
BeanToValidate beanToValidate = new BeanToValidate();
beanToValidate.setFirstname("a");
fieldGroup.setItemDataSource(beanToValidate);
Field<?> nameField = fieldGroup.buildAndBind("firstname");
Assert.assertEquals(1, nameField.getValidators().size());
try {
nameField.validate();
} catch (InvalidValueException e) {
// The 1 cause is from BeanValidator, where it tells what failed
// 1 validation exception never gets wrapped.
Assert.assertEquals(1, e.getCauses().length);
}
// Create new, identical bean to cause duplicate validator unless #11045
// is fixed
beanToValidate = new BeanToValidate();
beanToValidate.setFirstname("a");
fieldGroup.setItemDataSource(beanToValidate);
Assert.assertEquals(1, nameField.getValidators().size());
try {
nameField.validate();
} catch (InvalidValueException e) {
// The 1 cause is from BeanValidator, where it tells what failed
// 1 validation exception never gets wrapped.
Assert.assertEquals(1, e.getCauses().length);
}
}
}