package br.com.caelum.stella.validation.ie; import static org.junit.Assert.assertTrue; 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 IERioGrandeDoNorteValidatorTest extends IEValidatorTest { public IERioGrandeDoNorteValidatorTest() { super(wrongCheckDigitUnformattedStringWithTenDigits, validUnformattedStringWithNineDigits, validFormattedStringWithTenDigits, validValues); } private static final String wrongCheckDigitUnformattedStringWithTenDigits = "2000400403"; private static final String validUnformattedStringWithNineDigits = "200400401"; private static final String validUnformattedStringWithTenDigits = "2000400400"; private static final String validFormattedStringWithNineDigits = "20.040.040-1"; private static final String validFormattedStringWithTenDigits = "20.0.040.040-0"; private static final String[] validValues = { validFormattedStringWithTenDigits, validFormattedStringWithNineDigits, "20.3.615.641-0", "20.5.276.231-0", "20.3.756.176-8", "20.3.355.678-6", "20.2.249.717-1", "20.8.745.500-7"}; @Override protected Validator<String> getValidator(MessageProducer messageProducer, boolean isFormatted) { return new IERioGrandeDoNorteValidator(messageProducer, isFormatted); } @Test @Override public void shouldNotValidateIEWithMoreDigitsThanAlowed() { Validator<String> validator = getValidator(messageProducer, false); String value = validUnformattedStringWithTenDigits + "5"; try { validator.assertValid(value); fail(); } catch (InvalidStateException e) { assertTrue(e.getInvalidMessages().size() == 1); } verify(messageProducer, times(1)).getMessage(IEError.INVALID_DIGITS); } }