package br.com.caelum.stella.validation.ie;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import org.junit.Test;
import br.com.caelum.stella.MessageProducer;
import br.com.caelum.stella.validation.InvalidStateException;
import br.com.caelum.stella.validation.Validator;
import br.com.caelum.stella.validation.error.IEError;
public class IEBahiaValidatorTest extends IEValidatorTest {
/*
* 612345-57
*
* 123456-63
*/
private static final String wrongCheckDigitUnformattedNewString = "61234559";
private static final String validUnformattedNewString = "61234557";
private static final String validFormattedNewString = "612345-57";
private static final String[] validValues = { validFormattedNewString, "123456-63", "1000003-06","1057652-04", "0635718-30", "0770288-84", "77.028.884", "077.028.884" };
protected Validator<String> newValidator() {
return new IEBahiaValidator();
}
public IEBahiaValidatorTest() {
super(wrongCheckDigitUnformattedNewString, validUnformattedNewString, validFormattedNewString, validValues);
}
@Override
protected Validator<String> getValidator(MessageProducer messageProducer, boolean isFormatted) {
return new IEBahiaValidator(messageProducer, isFormatted);
}
@Test
@Override
public void shouldNotValidateIEWithMoreDigitsThanAlowed() {
Validator<String> validator = getValidator(messageProducer, false);
String value = validUnformattedNewString + "45";
try {
validator.assertValid(value);
fail();
} catch (InvalidStateException e) {
assertEquals(1, e.getInvalidMessages().size());
}
verify(messageProducer, times(1)).getMessage(IEError.INVALID_DIGITS);
}
}