package br.com.caelum.stella.validation; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import org.junit.Test; /** * @author Leonardo Bessa */ public class NITValidatorTest { private static final String INVALID_FORMAT = "INVALID FORMAT"; private static final String INVALID_DIGITS = "INVALID DIGITS"; private static final String INVALID_CHECK_DIGITS = "INVALID CHECK DIGITS"; @Test public void shouldNotValidateNITWithInvalidCharacter() { NITValidator validator = new NITValidator(); String value = "1111111a111"; try { validator.assertValid(value); fail(); } catch (InvalidStateException e) { assertTrue(e.getInvalidMessages().size() == 1); assertMessage(e, INVALID_DIGITS); } } private void assertMessage(InvalidStateException invalidStateException, String expected) { assertTrue(invalidStateException.getInvalidMessages().get(0).getMessage().contains(expected)); } @Test public void shouldNotValidateNITWithLessDigitsThanAllowed() { NITValidator validator = new NITValidator(); String value = "1234567890"; try { validator.assertValid(value); fail(); } catch (InvalidStateException e) { assertTrue(e.getInvalidMessages().size() == 1); assertMessage(e, INVALID_DIGITS); } } @Test public void shouldNotValidateNITWithMoreDigitsThanAlowed() { NITValidator validator = new NITValidator(); String value = "123456789012"; try { validator.assertValid(value); fail(); } catch (InvalidStateException e) { assertTrue(e.getInvalidMessages().size() == 1); assertMessage(e, INVALID_DIGITS); } } @Test public void shouldNotValidateNITCheckDigitsWithCheckDigitWrong() { NITValidator validator = new NITValidator(); // VALID NIT = 24.84380.348-0 String value = "24843803470"; try { validator.assertValid(value); fail(); } catch (InvalidStateException e) { assertTrue(e.getInvalidMessages().size() == 1); assertMessage(e, INVALID_CHECK_DIGITS); } } @Test public void shouldValidateValidNIT() { NITValidator validator = new NITValidator(); validator.assertValid("12345678919"); validator.assertValid("34608514300"); validator.assertValid("47393545608"); } @Test public void shouldValidateNullNIT() { NITValidator validator = new NITValidator(); String value = null; validator.assertValid(value); } @Test public void shouldValidateValidFormattedNIT() { NITValidator validator = new NITValidator(true); // VALID NIT = 123.45678.91-9 String value = "123.45678.91-9"; validator.assertValid(value); } @Test public void shouldNotValidateValidUnformattedNIT() { NITValidator validator = new NITValidator(true); // VALID NIT = 12.34567.891-9 String value = "12345678919"; try { validator.assertValid(value); fail(); } catch (InvalidStateException e) { assertTrue(e.getInvalidMessages().size() == 1); assertMessage(e, INVALID_FORMAT); } } @Test public void shouldGenerateRandomValidUnformattedNIT() { NITValidator validator = new NITValidator(false); String value = validator.generateRandomValid(); validator.assertValid(value); } @Test public void shouldGenerateRandomValidFormattedNIT() { NITValidator validator = new NITValidator(true); String value = validator.generateRandomValid(); validator.assertValid(value); } }