package br.com.caelum.stella.bean.validation.xml;
import javax.validation.ConstraintValidatorContext;
import junit.framework.Assert;
import net.vidageek.mirror.dsl.Mirror;
import org.junit.Test;
import org.mockito.Mockito;
import br.com.caelum.stella.bean.validation.xml.Length;
import br.com.caelum.stella.bean.validation.xml.logic.StellaLengthValidator;
@SuppressWarnings("deprecation")
public class StellaLengthValidatorTest {
private ConstraintValidatorContext context = Mockito.mock(ConstraintValidatorContext.class);
@Test
public void testThatNullIsValid() {
StellaLengthValidator validator = new StellaLengthValidator();
validator.initialize(new Mirror().on(AnnotatedModel.class).reflect().annotation(Length.class).atField("foo"));
Assert.assertTrue(validator.isValid(null, context));
}
@Test
public void testThatIsInvalidIfStringIsSmallerThanParameter() {
StellaLengthValidator validator = new StellaLengthValidator();
validator.initialize(new Mirror().on(AnnotatedModel.class).reflect().annotation(Length.class).atField("s1"));
Assert.assertFalse(validator.isValid("as", context));
}
@Test
public void testThatIsInvalidIfStringIsBiggerThanParameter() {
StellaLengthValidator validator = new StellaLengthValidator();
validator.initialize(new Mirror().on(AnnotatedModel.class).reflect().annotation(Length.class).atField("s2"));
Assert.assertFalse(validator.isValid("12345678912", context));
}
@Test(expected = IllegalStateException.class)
public void testThatThrowsExceptionIfMinIsBiggerThanMax() {
StellaLengthValidator validator = new StellaLengthValidator();
validator.initialize(new Mirror().on(AnnotatedModel.class).reflect().annotation(Length.class).atField("s4"));
}
@Test(expected = IllegalStateException.class)
public void testThatThrowsExceptionIfMinIsNegative() {
StellaLengthValidator validator = new StellaLengthValidator();
validator.initialize(new Mirror().on(AnnotatedModel.class).reflect().annotation(Length.class).atField("s5"));
}
@Test
public void testThatIsValidIfBetweenMaxAndMin() {
StellaLengthValidator validator = new StellaLengthValidator();
validator.initialize(new Mirror().on(AnnotatedModel.class).reflect().annotation(Length.class).atField("s3"));
Assert.assertTrue(validator.isValid("1234567890", context));
}
public static class AnnotatedModel {
@Length
public String foo = null;
@Length
public Integer bar = null;
@Length(min = 10)
public String s1;
@Length(max = 10)
public String s2;
@Length(min = 10, max = 10)
public String s3;
@Length(min = 11, max = 10)
public String s4;
@Length(min = -1, max = 10)
public String s5;
}
}