package com.vaadin.v7.tests.server.component.textfield;
import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.Test;
import com.vaadin.v7.data.Validator;
import com.vaadin.v7.data.Validator.InvalidValueException;
import com.vaadin.v7.data.util.ObjectProperty;
import com.vaadin.v7.data.validator.EmailValidator;
import com.vaadin.v7.data.validator.RegexpValidator;
import com.vaadin.v7.data.validator.StringLengthValidator;
import com.vaadin.v7.ui.TextField;
public class TextFieldWithValidatorTest {
private TextField field;
private ObjectProperty<String> property;
@Before
public void setUp() {
field = new TextField();
field.setInvalidAllowed(false);
property = new ObjectProperty<String>("original");
field.setPropertyDataSource(property);
}
@Test
public void testMultipleValidators() {
field.addValidator(new StringLengthValidator(
"Length not between 1 and 3", 1, 3, false));
field.addValidator(new StringLengthValidator(
"Length not between 2 and 4", 2, 4, false));
// fails
try {
field.setValue("a");
fail();
} catch (InvalidValueException e) {
// should fail
}
// succeeds
field.setValue("ab");
// fails
try {
field.setValue("abcd");
fail();
} catch (InvalidValueException e) {
// should fail
}
}
@Test
public void testRemoveValidator() {
Validator validator1 = new StringLengthValidator(
"Length not between 1 and 3", 1, 3, false);
Validator validator2 = new StringLengthValidator(
"Length not between 2 and 4", 2, 4, false);
field.addValidator(validator1);
field.addValidator(validator2);
field.removeValidator(validator1);
// fails
try {
field.setValue("a");
fail();
} catch (InvalidValueException e) {
// should fail
}
// succeeds
field.setValue("ab");
// succeeds
field.setValue("abcd");
}
@Test
public void testRemoveAllValidators() {
Validator validator1 = new StringLengthValidator(
"Length not between 1 and 3", 1, 3, false);
Validator validator2 = new StringLengthValidator(
"Length not between 2 and 4", 2, 4, false);
field.addValidator(validator1);
field.addValidator(validator2);
field.removeAllValidators();
// all should succeed now
field.setValue("a");
field.setValue("ab");
field.setValue("abcd");
}
@Test
public void testEmailValidator() {
field.addValidator(new EmailValidator("Invalid e-mail address"));
// not required
field.setRequired(false);
// succeeds
field.setValue("");
// needed as required flag not checked by setValue()
field.validate();
// succeeds
field.setValue(null);
// needed as required flag not checked by setValue()
field.validate();
// succeeds
field.setValue("test@example.com");
// fails
try {
field.setValue("invalid e-mail");
fail();
} catch (InvalidValueException e) {
// should fail
}
// required
field.setRequired(true);
// fails
try {
field.setValue("");
// needed as required flag not checked by setValue()
field.validate();
fail();
} catch (InvalidValueException e) {
// should fail
}
// fails
try {
field.setValue(null);
// needed as required flag not checked by setValue()
field.validate();
fail();
} catch (InvalidValueException e) {
// should fail
}
// succeeds
field.setValue("test@example.com");
// fails
try {
field.setValue("invalid e-mail");
fail();
} catch (InvalidValueException e) {
// should fail
}
}
@Test
public void testRegexpValidator() {
field.addValidator(
new RegexpValidator("pattern", true, "Validation failed"));
field.setRequired(false);
// succeeds
field.setValue("");
// needed as required flag not checked by setValue()
field.validate();
// succeeds
field.setValue(null);
// needed as required flag not checked by setValue()
field.validate();
// succeeds
field.setValue("pattern");
// fails
try {
field.setValue("mismatch");
fail();
} catch (InvalidValueException e) {
// should fail
}
}
}