package br.com.caelum.stella.bean.validation.xml.logic;
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.Max;
import br.com.caelum.stella.bean.validation.xml.logic.StellaMaxValidator;
@SuppressWarnings("deprecation")
final public class StellaMaxValidatorTest {
private ConstraintValidatorContext context = Mockito.mock(ConstraintValidatorContext.class);
@Test
public void testThatNullIsValid() {
StellaMaxValidator validator = new StellaMaxValidator();
Assert.assertTrue(validator.isValid(null,context));
}
@Test
public void testThatAcceptsOnlyByteShortIntegerAndLong() {
StellaMaxValidator validator = new StellaMaxValidator();
validator.initialize(new Mirror().on(AnnotatedModel.class).reflect().annotation(Max.class).atField("b"));
Assert.assertTrue(validator.isValid((byte) 10,context));
Assert.assertTrue(validator.isValid((short) 10,context));
Assert.assertTrue(validator.isValid(10,context));
Assert.assertTrue(validator.isValid((long) 10,context));
}
@Test
public void testThatIsInvalidIfValueIsBiggerThanAnnotatedValue() {
StellaMaxValidator validator = new StellaMaxValidator();
validator.initialize(new Mirror().on(AnnotatedModel.class).reflect().annotation(Max.class).atField("b"));
Assert.assertFalse(validator.isValid(21,context));
}
@Test
public void testThatIsValidIfValueIsEqualToAnnotatedValue() {
StellaMaxValidator validator = new StellaMaxValidator();
validator.initialize(new Mirror().on(AnnotatedModel.class).reflect().annotation(Max.class).atField("b"));
Assert.assertTrue(validator.isValid(10,context));
}
public static class AnnotatedModel {
@Max(20)
public Byte b;
}
}