package br.com.caelum.stella.validation;
import org.junit.Assert;
import org.junit.Test;
import br.com.caelum.stella.validation.AcceptAnyValidator.Documento;
/**
* Created by IntelliJ IDEA. User: leonardobessa Date: Jan 26, 2009 Time:
* 5:02:31 PM
*/
public class AcceptAnyValidatorTest {
@Test
public void testAssertValidForCpf() {
Validator<String> validator = new AcceptAnyValidator(Documento.CPF);
String cpf = "336.397.038-20";
validator.assertValid(cpf);
}
@Test
public void testAssertValidForCnpj() {
Validator<String> validator = new AcceptAnyValidator(Documento.CNPJ);
String cnpj = "26.637.142/0001-58";
validator.assertValid(cnpj);
}
@Test
public void testInvalidMessagesForCpf() {
Validator<String> validator = new AcceptAnyValidator(Documento.CPF);
String cpf = "336.397.038-20";
Assert.assertTrue(validator.invalidMessagesFor(cpf).isEmpty());
}
@Test
public void testAssertValidForCpnj() {
Validator<String> validator = new AcceptAnyValidator(Documento.CNPJ);
String cnpj = "26.637.142/0001-58";
Assert.assertTrue(validator.invalidMessagesFor(cnpj).isEmpty());
}
@Test(expected = InvalidStateException.class)
public void testAssertValidForInvalidCpf() {
Validator<String> validator = new AcceptAnyValidator(Documento.CPF);
String cpf = "336.397.038-22";
validator.assertValid(cpf);
}
@Test(expected = InvalidStateException.class)
public void testAssertValidForInvalidCnpj() {
Validator<String> validator = new AcceptAnyValidator(Documento.CNPJ);
String cnpj = "26.637.142/0001-57";
validator.assertValid(cnpj);
}
@Test
public void testInvalidMessagesForInvalidCpf() {
Validator<String> validator = new AcceptAnyValidator(Documento.CPF);
String cpf = "336.397.038-10";
Assert.assertFalse(validator.invalidMessagesFor(cpf).isEmpty());
}
@Test
public void testAssertValidForInvalidCpnj() {
Validator<String> validator = new AcceptAnyValidator(Documento.CNPJ);
String cnpj = "26.637.142/0001-68";
Assert.assertFalse(validator.invalidMessagesFor(cnpj).isEmpty());
}
@Test
public void testAssertValidForUnformatedCpf() {
Validator<String> validator = new AcceptAnyValidator(false, Documento.CPF);
String cpf = "33639703820";
validator.assertValid(cpf);
}
@Test
public void testAssertValidForUnformatedCnpj() {
Validator<String> validator = new AcceptAnyValidator(false, Documento.CNPJ);
String cnpj = "26637142000158";
validator.assertValid(cnpj);
}
@Test
public void testInvalidMessagesForUnformatedCpf() {
Validator<String> validator = new AcceptAnyValidator(false, Documento.CPF);
String cpf = "33639703820";
Assert.assertTrue(validator.invalidMessagesFor(cpf).isEmpty());
}
@Test
public void testAssertValidForUnformatedCpnj() {
Validator<String> validator = new AcceptAnyValidator(false, Documento.CNPJ);
String cnpj = "26637142000158";
Assert.assertTrue(validator.invalidMessagesFor(cnpj).isEmpty());
}
@Test
public void shouldGenerateARandomValidDocumentBasedOnTheFirstDocumentPassedOnConstruction() {
Validator<String> cpfOnlyValidator = new AcceptAnyValidator(false, Documento.CPF);
String validCpf = cpfOnlyValidator.generateRandomValid();
new CPFValidator(false).assertValid(validCpf);
Validator<String> cnpjOnlyValidator = new AcceptAnyValidator(false, Documento.CNPJ);
String validCnpj = cnpjOnlyValidator.generateRandomValid();
new CNPJValidator(false).assertValid(validCnpj);
Validator<String> cnpjCpfFormattedValidator = new AcceptAnyValidator(true, Documento.CNPJ, Documento.CPF);
String anotherValidCnpj = cnpjCpfFormattedValidator.generateRandomValid();
new CNPJValidator(true).assertValid(anotherValidCnpj);
}
}