package com.vaadin.data.validator; import java.util.Calendar; import java.util.Locale; import org.junit.After; import org.junit.Test; import com.vaadin.tests.data.bean.Address; import com.vaadin.tests.data.bean.BeanToValidate; import com.vaadin.ui.UI; public class BeanValidatorTest extends ValidatorTestBase { @Test public void testFirstNameNullFails() { assertFails(null, "may not be null", validator("firstname")); } @Test public void testFirstNameTooShortFails() { assertFails("x", "size must be between 3 and 16", validator("firstname")); } @Test public void testFirstNameLongEnoughPasses() { assertPasses("Magi", validator("firstname")); } @Test public void testAgeTooYoungFails() { assertFails(14, "Must be 18 or above", validator("age")); } @Test public void testDateOfBirthNullPasses() { assertPasses(null, validator("dateOfBirth")); } @Test public void testDateOfBirthInTheFutureFails() { Calendar year3k = Calendar.getInstance(); year3k.set(3000, 0, 1); assertFails(year3k, "must be in the past", validator("dateOfBirth")); } @Test public void testAddressesEmptyArrayPasses() { Address[] noAddresses = {}; assertPasses(noAddresses, validator("addresses")); } @Test public void testAddressesNullFails() { assertFails(null, "may not be null", validator("addresses")); } @Test public void testInvalidDecimalsFailsInFrench() { setLocale(Locale.FRENCH); BeanValidator v = validator("decimals"); assertFails("1234.567", "Valeur numérique hors limite " + "(<3 chiffres>.<2 chiffres> attendus)", v); } @Test public void testAddressNestedPropertyInvalidPostalCodeFails() { assertFails(100_000, "must be less than or equal to 99999", validator("address.postalCode")); } @Test public void testNullValuePasses() { assertPasses(null, validator("nickname")); } @After public void tearDown() { UI.setCurrent(null); } private BeanValidator validator(String propertyName) { return new BeanValidator(BeanToValidate.class, propertyName); } }