package br.com.caelum.stella.bean.validation;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import javax.validation.ConstraintValidatorContext;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import br.com.caelum.stella.bean.validation.IE;
import br.com.caelum.stella.bean.validation.logic.StellaIEValidator;
/**
* @author Leonardo Bessa
*/
public class StellaIEValidatorTest {
private ConstraintValidatorContext context = Mockito.mock(ConstraintValidatorContext.class);
private StellaIEValidator validator;
@Before
public void createValidator() throws Exception {
IE ieAnnotation = ObjectWithIE.class.getAnnotation(IE.class);
validator = new StellaIEValidator();
validator.initialize(ieAnnotation);
}
@Test(expected = RuntimeException.class)
public void shouldThrowExceptionWhenCantFindFielsInObject() {
{
boolean valid = validator.isValid(new Object(),context);
assertFalse(valid);
}
}
@Test(expected = RuntimeException.class)
public void shouldThrowExceptionWhenValueIsNotAnObject() {
{
boolean valid = validator.isValid(14,context);
assertFalse(valid);
}
}
@Test
public void shouldValidateObjectWithEstadoAndIE() {
{
boolean valid;
valid = validator.isValid(new ObjectWithIE("P011004243002", "SP"),context);
assertTrue(valid);
valid = validator.isValid(new ObjectWithIE("2243658792", "RS"),context);
assertTrue(valid);
valid = validator.isValid(new ObjectWithIE("78045302", "RJ"),context);
assertTrue(valid);
valid = validator.isValid(new ObjectWithIE("041939808", "AM"),context);
assertTrue(valid);
}
}
@Test
public void shouldValidateNull() {
boolean valid = validator.isValid(null,context);
assertTrue(valid);
}
@Test
public void shouldNotValidateWhenEstadoIsMissing() {
boolean valid = validator.isValid(new ObjectWithIE("P011004243002", ""),context);
assertFalse(valid);
}
@Test
public void shouldValidateEmpty() {
boolean valid = validator.isValid(new ObjectWithIE("", "SP"),context);
assertTrue(valid);
}
}